当我试图从一个差异备份恢复时,我得到了以下错误:
System.Data.SqlClient.SqlError:无法应用此备份集,因为它位于与数据库不一致的恢复路径上。恢复路径是将数据库带到特定恢复点的数据和日志备份序列。查找要还原的兼容备份,或还原数据库的其余部分以匹配此备份集中的恢复点,这将使数据库恢复到不同的时间点。
我们使用Server 2008 R2和两个小型数据库(A:生产,B:测试),在完全恢复模式下。
我每天的备份是:
我通常使用Management从最新的完全备份恢复我的测试数据库,但是今天我们发现有些报告不能正常工作,所以我试图检查昨天营业时间发生了什么,所以我第一次尝试了差异备份。
我得到了以下错误:
无法还原日志或差异备份,因为没有准备前滚的文件。
然后,我手动备份测试数据库,使用同样的手动完全备份(因为昨晚生产的数据库无法工作)、替换选项和NoRecovery选项还原它,然后尝试恢复昨天上午的差异,但是我得到了关于路径的以下错误:
无法应用此备份集,因为它位于与数据库不一致的恢复路径上.
对于我做错了什么,或者我如何从所有的差异中恢复到一天结束为止,有什么建议吗?
发布于 2015-09-11 04:44:22
以下是我从你的问题中了解到的:
您昨天所做的全部备份未能在TestingDB上恢复。因此,您使用了最新的完全备份,并且成功地恢复了备份。在此之后,您将尝试还原昨天的差异备份。
这不管用。这是它不起作用的原因。每次备份发生时,让它完全\DIFF或日志。它生成一个LSN,这个LSN是一个链和唯一的数字,它们相互匹配,并在恢复时进行比较。
如果您已经进行了最新的完全备份,那么现在您应该使用最新的diff备份,并尝试在TestingDB上恢复它,并且您不应该获得之前收到的任何错误。此外,在还原时,可以使用RESTOREHEADERONLY命令检查完整备份文件和Diff备份文件的LSN,该命令读取.bak文件的头文件,并向您提供有关第一个和以前的LSN的信息。
我希望这有助于解决你的问题。
发布于 2015-09-11 01:31:16
答案在于你的方法。首先,您试图恢复对处于最近状态的数据库的差异。您需要首先(从生产中)恢复最后一个完整备份,然后恢复您的差异。第二次尝试还原数据库上的差异时,备份没有从数据库中提取。这两种情况下的SQL都不会让您还原差异,因为它只会导致损坏。
https://dba.stackexchange.com/questions/114728
复制相似问题