我们有一个开发服务器,它有一个夜间运行的作业,用于恢复备份的数据库。我们的主数据库服务器会在夜间备份数据库,然后我们的开发服务器会恢复这些数据库,以使它们每天都保持最新状态(而不是按事务处理)。
由于我们的数据库大小达到数 GB,我们现在面临的问题是恢复需要一整夜的几个小时。相反,我们希望推广使用差异数据库备份和恢复。
我遇到的问题是开发服务器执行了恢复,但我如何知道在差异备份中应该选择哪个文件?您必须在恢复语句中指定一个文件,即 FILE = 9,但如果我不知道它是哪个文件怎么办?如果我只想要最新的怎么办?
那么如何从差异数据库备份中指定最新文件?
http://msdn.microsoft.com/en-us/library/ms186858.aspx
干杯
答案1
有几种不同的方法可以实现此自动化,使用存储过程/TSQL或powershell 脚本(我推荐使用 powershell 脚本)。如果你想要编写自己的自动化程序来执行此操作,你基本上需要查看“仅恢复文件列表“语句将为您提供给定备份集中所有文件的列表(在这种情况下,找出哪个文件号是您拥有的完整备份的最新差异备份)。
请注意,如果您想恢复差异,您必须恢复与给定 DIFF 备份相关联的最新的 FULL 备份才能使其工作,或者可能使恢复的开发数据库处于可恢复状态。
例如,这将有效:
- 从周日开始恢复 DEV 上的完整备份
- 在 DEV 上恢复周一的差异备份
这也行得通:
- 从周日开始恢复 DEV 上的完整备份
- 在 DEV 上恢复周二、周三或周四的差异备份
然而,这是行不通的:
- 从周日开始恢复 DEV 上的完整备份
- 周一在 PROD 上进行完整备份
- 在 DEV 上恢复周二的差异备份
在最后一种情况下,您还必须先恢复 DEV 上周一的完整备份,然后才能恢复周二的 Diff 备份。也有例外(例如,如果周一的完整备份是COPY_ONLY 备份并且没有破坏差异备份链)。请参阅有关使用 DIFF 备份的更多详细信息,请参阅本文以及使用所需的恢复链。
答案2
您应该能够从中获取最新差异备份的记录及其路径msdb 备份表。但如上所述,如果您想恢复差异,则必须先恢复完整。此时,您最好重新考虑其他解决方案,例如日志传送或快照复制,或重新考虑要求。