误区 #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
SQL Server误区30日谈 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
2019-12-28 15:46MSSQL教程网 Sql Server
乍一看,由于BACKUP WITH CHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事
延伸 · 阅读
- 2022-03-06C#连接SQL Server的实现方法
- 2022-03-05python读写文件with open的介绍
- 2022-03-04SQL Server2012无法连接到服务器的解决方法
- 2022-03-04python编程webpy框架模板之def with学习
- 2022-03-03SQL Server查询某个字段在哪些表中存在
- 2022-02-25Sql Server之数据类型详解
- Sql Server
三种SQL分页查询的存储过程代码
三种SQL分页查询的存储过程代码,需要的朋友可以参考下。 ...
- Sql Server
SQLServer 数据库的数据汇总完全解析(WITH ROLLUP)
乍一看,好像很容易,用group by好像能实现?但仔细研究下去,你又会觉得group by也是无能为力,总欠缺点什么,无从下手。那么,到底该如何做呢?别急,...
- Sql Server
SQLServer2005创建定时作业任务
这篇文章主要为大家介绍了SQLServer2005创建定时作业任务的详细过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...
- Sql Server
SQL2005 存储过程解密方法
SQL2005 存储过程解密方法,需要的朋友可以参考下。...
- Sql Server
深入SQLServer中ISNULL与NULLIF的使用详解
本篇文章是对SQLServer中ISNULL与NULLIF的使用进行了详细分析介绍,需要的朋友参考下 ...
- Sql Server
SQL_Server全文索引的用法解析
SQL Server全文索引相信大家都有一定的了解,下面就为您介绍SQL Server全文索引的用法及相关的语句,希望可以让您对SQL Server全文索引能有更深的认识 ...
- Sql Server
SQL JOIN 连接详细介绍及简单使用实例
这篇文章主要介绍了SQL JOIN 连接详细介绍及简单使用实例的相关资料,需要的朋友可以参考下 ...
- Sql Server
SQLServer2005 批量查询自定义对象脚本
SQLServer2005 批量查询自定义对象脚本,使用系统函数object_definition和系统表 sysobjects 就可以了 ...