SQL2005 数据库差异备份

zc406222927 2014-08-08 06:41:38
此问题比较特殊,已经困扰本人3天了,望大神给个能给个解决方案。
为何会产生这样的问题就不要深究了,综合原因是经手人过多。


涉及:SQL2005数据库TEST、电脑A、电脑B
问题:
1.数据库TEST首先创建于电脑A中,设置了一个计划任务是差量备份(有完整备份)。
2.备份了一段时间后,将电脑A中的SQL服务停止,且将数据库TEST的两个文件(mdf、ldf)拷贝到电脑B上。
3.在电脑B中将拷贝的数据库TEST附加到SQL中,然后清除了所有数据修改了表结构,并做了两次全部备份。
4.将此修改后的数据库拷贝回电脑A中(将之前的文件转移到别的目录备份),开启了SQL服务,未做任何全备份,但是计划任务自动进行了差异备份(TestCY.bak)。

问:4中的差异备份(TestCY.bak)对应的完整备份时机器A中的最后一次(TestAWZ.bak)还是机器B中的最后一次(TestBWZ.bak)?

实操:由于电脑A的特殊性没有做任何恢复操作。
1.在电脑B中使用TestBWZ.bak和TestCY.bak恢复提示如下:
System.Data.SqlClient.SqlError: 无法应用此备份集,因为它的恢复路径与数据库不一致。该恢复路径是将数据库还原到特定恢复点的数据和日志备份的序列。请找到要还原的兼容备份,或者还原数据库的其余部分以与此备份集内的恢复点匹配,这样可将数据库还原到其他时间点。有关恢复路径的详细信息,请参阅 SQL Server 联机丛书。 (Microsoft.SqlServer.Smo)

2.在电脑C中使用(TestAWZ.bak和TestBWZ.bak)、(TestBWZ.bak和TestCY.bak)恢复提示如下:
System.Data.SqlClient.SqlError: 无法还原此差异备份,因为该数据库尚未还原到正确的早期状态。 (Microsoft.SqlServer.Smo)
...全文
374 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zc406222927 2014-08-13
  • 打赏
  • 举报
回复
引用 4 楼 SmithLiu328 的回复:
you can query sql server backup history, the lasted full backup before your diffrential backup is the full backup you looking for.
我明白是最后一次完整备份,但是因为一直恢复失败,所以才去研究它的机制,还是没有搞明白如果数据库发生转移的情况下(分离、附加),是以哪一个SQL服务中的最后一次为准,或许回答还是最后一次,但是最后一次确实无法成功恢复,差异备份如果能给出最后一次完整备份内容提示,或者可以脱离最后一次完整备份,那就好了。不过工具好不好,还是得看用的人靠不靠谱。。。放弃恢复了,谢谢
zc406222927 2014-08-11
  • 打赏
  • 举报
回复
引用 2 楼 SmithLiu328 的回复:
补充一下上面说的,如果FULLBACKUP使用COPY_ONLY选项不会重置DCM PAGE.
DCM PAGE 是在数据库文件(MDF)中的?完全备份的时候备份文件中也包含这个信息? 有没有办法能看出差异还原对应的最后一个完整备份的日期或什么的信息? 您说的move选项是还原选项中的第几个?
KevinLiu 2014-08-11
  • 打赏
  • 举报
回复
引用 3 楼 zc406222927 的回复:
[quote=引用 2 楼 SmithLiu328 的回复:] 补充一下上面说的,如果FULLBACKUP使用COPY_ONLY选项不会重置DCM PAGE.
DCM PAGE 是在数据库文件(MDF)中的?完全备份的时候备份文件中也包含这个信息? 有没有办法能看出差异还原对应的最后一个完整备份的日期或什么的信息? 您说的move选项是还原选项中的第几个? [/quote] you can query sql server backup history, the lasted full backup before your diffrential backup is the full backup you looking for.
KevinLiu 2014-08-09
  • 打赏
  • 举报
回复
补充一下上面说的,如果FULLBACKUP使用COPY_ONLY选项不会重置DCM PAGE.
KevinLiu 2014-08-09
  • 打赏
  • 举报
回复
问:4中的差异备份(TestCY.bak)对应的完整备份时机器A中的最后一次(TestAWZ.bak)还是机器B中的最后一次(TestBWZ.bak)? 根据最后一次完整备份,差异备份的内容是通过DCM页进行管理的,完整备份后DCM页会重置。关于DCM可以参考下面我给出的内容。另外提一下,你在B电脑中做恢复的时候数据库的位置不对啊?如果用MOVE选项呢? Differential Change Map(DCM): SQL Server uses Differential Changes Map (DCM) page to track extent modified after the last full backup operation. DCM page is the 6th page in the data file.DCM page track the extents modified after the full backup.DCM has a bit for every extent it tracks. If the bit is 1, the corresponding extent is modified after the last full backup, if the bit is 0, there is no change in the corresponding extent after the last full backup.A DCM page can hold information of around 64000 extents. Precisely DCM pages repeat after every 511232 pages .One DCM page can track the changes of exactly 63904 extents.The second DCM page will be 511238th page. Differential backups read the DCM pages to determine which extents have been modified after the last full backup. This greatly reduces the number of pages that a differential backup must scan. The length of time that a differential backup runs is proportional to the number of extents modified since the last full backup and not the overall size of the database.

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧