首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >还原差异备份时出错

还原差异备份时出错
EN

Database Administration用户
提问于 2015-09-10 22:43:55
回答 2查看 5K关注 0票数 1

当我试图从一个差异备份恢复时,我得到了以下错误:

System.Data.SqlClient.SqlError:无法应用此备份集,因为它位于与数据库不一致的恢复路径上。恢复路径是将数据库带到特定恢复点的数据和日志备份序列。查找要还原的兼容备份,或还原数据库的其余部分以匹配此备份集中的恢复点,这将使数据库恢复到不同的时间点。

我们使用Server 2008 R2和两个小型数据库(A:生产,B:测试),在完全恢复模式下。

我每天的备份是:

  1. 在下午6点运行的完整夜间备份
  2. 白天每小时进行差异备份。
  3. 在办公时间每30分钟记录一次备份。

我通常使用Management从最新的完全备份恢复我的测试数据库,但是今天我们发现有些报告不能正常工作,所以我试图检查昨天营业时间发生了什么,所以我第一次尝试了差异备份。

我得到了以下错误:

无法还原日志或差异备份,因为没有准备前滚的文件。

然后,我手动备份测试数据库,使用同样的手动完全备份(因为昨晚生产的数据库无法工作)、替换选项和NoRecovery选项还原它,然后尝试恢复昨天上午的差异,但是我得到了关于路径的以下错误:

无法应用此备份集,因为它位于与数据库不一致的恢复路径上.

对于我做错了什么,或者我如何从所有的差异中恢复到一天结束为止,有什么建议吗?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2015-09-11 04:44:22

以下是我从你的问题中了解到的:

您昨天所做的全部备份未能在TestingDB上恢复。因此,您使用了最新的完全备份,并且成功地恢复了备份。在此之后,您将尝试还原昨天的差异备份。

这不管用。这是它不起作用的原因。每次备份发生时,让它完全\DIFF或日志。它生成一个LSN,这个LSN是一个链和唯一的数字,它们相互匹配,并在恢复时进行比较。

如果您已经进行了最新的完全备份,那么现在您应该使用最新的diff备份,并尝试在TestingDB上恢复它,并且您不应该获得之前收到的任何错误。此外,在还原时,可以使用RESTOREHEADERONLY命令检查完整备份文件和Diff备份文件的LSN,该命令读取.bak文件的头文件,并向您提供有关第一个和以前的LSN的信息。

我希望这有助于解决你的问题。

票数 3
EN

Database Administration用户

发布于 2015-09-11 01:31:16

答案在于你的方法。首先,您试图恢复对处于最近状态的数据库的差异。您需要首先(从生产中)恢复最后一个完整备份,然后恢复您的差异。第二次尝试还原数据库上的差异时,备份没有从数据库中提取。这两种情况下的SQL都不会让您还原差异,因为它只会导致损坏。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/114728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档