繁体   English   中英

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

[英]Seeking to restore from multiple bak files to a test SQL database

我们有一个大的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文件的相同逻辑名称。

我希望能够将这四个备份还原到服务器上的不同数据库中进行测试。 我在这篇文章中发现了一个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不冲突? 任何帮助都会很棒,谢谢。

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

我用这个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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM