寻求从多个bak文件还原到测试SQL数据库

时间:2013-08-21 14:48:13

标签: sql restore

我们有一个大的SQL数据库,我们在夜间备份中拆分成4个独立的bak文件,因此可以更容易地在异地发送。我们使用此语句(更改了db名称)

BACKUP DATABASE [Data] TO
DISK = 'd:\back\data1.bak',
DISK = 'd:\back\data2.bak',
DISK = 'd:\back\data3.bak',
DISK = 'd:\back\data4.bak'
WITH  INIT, NOUNLOAD, NAME = 'Data backup',  NOSKIP ,  STATS = 10,  NOFORMAT

所有四个备份都具有bak中mdf和ldf文件的相同逻辑名称。

我希望能够将这四个备份还原到服务器上的其他数据库进行测试。我在this post中找到了一个t-sql脚本,我认为会这样做,但我不确定。有人可以帮忙吗?

我想我可以调整并运行脚本如下:

RESTORE DATABASE Data_test FROM
DISK = 'd:\back\data1.bak',
DISK = 'd:\back\data2.bak',
DISK = 'd:\back\data3.bak',
DISK = 'd:\back\data4.bak'
WITH MOVE 'Prod_Data' TO 'D:\SQLDb\Data_Test1.mdf',
MOVE 'Prod_Data' TO 'D:\SQLDb\Data_Test2.ndf',
MOVE 'Prod_Data' TO 'D:\SQLDb\Data_Test3.ndf',
MOVE 'Prod_Data' TO 'D:\SQLDb\Data_Test4.ndf',
MOVE 'Prod_Log' TO 'C:\SQLtlogs\Data_test1.ldf'

你认为这会有用吗?并且这个测试db是否与恢复它的prod db不冲突?任何帮助都会很棒,谢谢。

2 个答案:

答案 0 :(得分:3)

好的,我实际上是用它来处理SSMS的GUI。您所要做的就是选择Tasks,Restore Database,从设备中选择,然后添加单独bak文件的所有四个文件,然后单击OK并使用Overwrite进行恢复,根据需要修改mdf和ldf的文件名,这样它们就是用于测试db而不是生产。 SSMS知道这四个文件是同一媒体集的一部分,并将它们重新组合成mdf和ldf文件。看起来我毕竟不需要脚本。

答案 1 :(得分:2)

我使用此TRANSACT-SQL命令执行您请求的几乎相同的操作。唯一的区别是我只是将每个逻辑文件移动到一个物理文件。我的命令(修改为使用您的示例)如下所示:

RESTORE DATABASE Data_test FROM
DISK = 'd:\back\data1.bak',
DISK = 'd:\back\data2.bak',
DISK = 'd:\back\data3.bak',
DISK = 'd:\back\data4.bak'
WITH MOVE 'Prod_Data' TO 'D:\SQLDb\Data_Test1.mdf',
MOVE 'Prod_Log' TO 'C:\SQLtlogs\Data_test1.ldf'