SQL Server误区30日谈 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB

所属分类: 数据库 / MsSql 阅读数: 400
收藏 0 赞 0 分享
误区 #27:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB
错误
    乍一看,由于BACKUP WITH CHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下:
    由SQL Server 2000或是更早版本升上来的数据库page checksums必须开启,在开启后,并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP ... WITH CHECKSUM就有可能导致一些损坏页不被发现,造成的后果……
    除此之外,还有一个问题是完整备份的时间间隔相对比较长,假如说一个月,而相对于DBCC CheckDB的最佳实践是一个礼拜,这导致WITH CHECKSUM不能替代CHECKDB。即使你每周都进行差异备份,但差异备份只会检测差异部分的页校验和。
    最后一点,也是危害最大的一点,就是使用BACKUP WITH CHECKSUM选项不能发现内存中的页损坏。这是因为由于内存芯片或是WINDOWS进程导致内存中的页损坏,并且在这之后写回磁盘。这导致损坏页却有正常的校验和,只有使用DBCC CheckDB才能发现这类错误。
    因此,说到底,你必须经常使用DBCC CHECKDB,如果对此你仍然心存疑问,请看我之前的一篇文章:CHECKDB From Every Angle: Consistency Checking Options for a VLDB

    扩展阅读:Search Engine Q&A #26: Myths around causing corruption
更多精彩内容其他人还在看

对有insert触发器表取IDENTITY值时发现的问题

赶快查了下msdn,原来@@IDENTITY还有这么多讲究
收藏 0 赞 0 分享

SQL SERVER 查询正在实行的SQL语句

SQL SERVER 查询正在实行的SQL语句的实现代码
收藏 0 赞 0 分享

sql 随机抽取几条数据的方法 推荐

前段时间在做项目的时刻。总是遇到这样一个问题。就是要怎么去让首页显示的内容不断的变化。想了很久。也没有什么结果。后面去想了一下。得出以下一个结果
收藏 0 赞 0 分享

sql 多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘

多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘
收藏 0 赞 0 分享

Java 实现连接sql server 2000

JDBC技术事实上是一种能通过JAVA语言访问任何结构化数据库的应用程序接口(API)(Sun这样说的,我也不知道是不是真的),而且现在的JDBC 3.0据Sun说也能访问Execel等电子表格程序!
收藏 0 赞 0 分享

SQL Server 不存在或访问被拒绝(转)

在使用 SQL Server 的过程中,用户遇到最多的问题莫过于连接失败了。一般而言,有两种连接SQL Server 的方式,一是利用 SQL Server 自带的客户端工具
收藏 0 赞 0 分享

分页查询 效率最高

给大家分享个效率最高的分页查询 5000万级别有效 比 ROWNUMBER 和Top效率高
收藏 0 赞 0 分享

sqlserver 系统存储过程 中文说明

sqlserver 系统存储过程这样大家就知道这些存储过程的作用了。
收藏 0 赞 0 分享

sql 多表连接查询

sql 多表连接查询语句代码,大家可以参考下。
收藏 0 赞 0 分享

SQL SERVER 自增列

判断Table是否存在自增列(Identity column)
收藏 0 赞 0 分享
查看更多