时间:2021-07-01 10:21:17 帮助过:6人阅读
我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你这是一个有坏页的数据库!
好了,那我们做一下备份看看!
正常的备份,不加 checksum 成功备份!
加上checksum备份,失败!
好像果然和微软文档说的一样!看到这有些看官会想,这不和我做CHECKDB差不多了么?
博主别的不多就是坏库多! 我们再拿一个库试一下!
我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你也这是一个有坏页的数据库!
我们用checksum 备份一下
哦??成功了???这是啥意思??
我们先来看一下 backupset的结果 :
那么损坏的页没check出来?我们再看一下 suspect_pages
suspect_pages里只查出了Test 库的坏页,那我XB28_3库的坏页哪里去了?
突然想到 suspect_pages 里面的数据只是 823 错误或 824 错误而失败的页!
而且使用checksum系统表会被漏掉,本文中XB28_3库的坏页就是一个object_id = 60的 系统表!
而且并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP ... WITH CHECKSUM就有可能导致一些损坏页不被发现。
这也说明备份时使用checksum不能完全取代DBCC checkDB的作用,这和Paul Randal大神的文章一致 : A SQL Server DBA myth a day: (27/30) use BACKUP WITH CHECKSUM to replace DBCC CHECKDB
--------------博客地址---------------------------------------------------------------------------------------
Expert 诊断优化系列 http://www.cnblogs.com/double-K/
-----------------------------------------------------------------------------------------------------
总结 :备份的checksum 选项可以用来发现数据库是否损坏,但不是所有类型的坏页都可以发现。
看官们的疑问:backup with checksum 可以用来取代DBCC checkDB。
这个观点是不正确的,一些逻辑一致性错误checksum是没法发现的!
数据库损坏不是很常见,很多DBA工作好多年都没有遇到,但是做好CHECKDB检查还是很必要的!万一出现你没有发现就比较悲剧了!
PS : 差异备份也可以使用checksum,但只会校验差异部分~
----------------------------------------------------------------------------------------------------
注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!
数据库备份checksum选项你会用么?
标签: