我们有一个开发服务器,有一个工作过夜,恢复备份的数据库。 我们的主数据库服务器在一夜之间备份数据库,然后我们的开发服务器恢复这些数据库,使它们每天保持最新(不是交易的基础)。
由于我们的数据库正在推动许多GB的数据库,现在我们面临的问题是恢复需要在一夜之间花费数小时。 相反,我们想推出使用差异数据库备份和恢复。
我遇到的问题是开发服务器进行恢复,但是如何知道在差异备份中select哪个文件? 你必须在恢复语句中指定一个文件即FILE = 9,但是如果我不知道它是哪个文件呢? 如果我只是想要最新的呢?
那么如何从差异数据库备份中指定最新的文件呢?
http://msdn.microsoft.com/en-us/library/ms186858.aspx
干杯
有几个不同的选项使用存储过程/ TSQL或PowerShell脚本来自动化(我build议使用PowerShell脚本)。 如果你想编写自己的自动化程序来完成这个任务,你基本上只需要查看“ restore filelist only ”语句,它会给你一个给定备份集中所有文件的列表(在这种情况下,找出哪个文件编号是完整备份的最新差异备份)。
请注意,如果要恢复差异,则必须还原与给定的DIFF备份关联的最近一次完整备份,以使其起作用,或者可能使已恢复的开发数据库保持可恢复状态州。
例如,这将工作:
这也将工作:
但是,这是行不通的:
在最后一种情况下,您还必须在DEV上从星期一恢复完整备份,然后才能恢复从星期二开始的差异备份。 也有例外情况(例如,如果星期一的完整备份是COPY_ONLY备份,并且不打破差异备份链)。 有关使用DIFF备份和所需恢复链的更多详细信息,请参阅这篇文章 。
您应该能够从msdb备份表中获取最新的差异备份及其path的logging。 但是如上所述,如果你想恢复差异,你必须首先恢复全部。 在这一点上,重新考虑日志传送或快照复制等不同的解决scheme,或重新考虑这些需求可能会更好。