SQLServer误解30天谈第十七天的页面错误检查错误

事实上,我已经有一篇文章解释页面校验前详细:如何告诉如果IO子系统是造成腐败

误区17:关于#页校验和的几个误解

轶事的传播基本上是错误的。

17)在升级SQL Server 2000或7之后自动打开页检查和(页面校验和)。

其实,不,数据库升级旧的实例不会自动打开页面校验和,除非你明确地使用ALTER DATABASE语句集page_verify校验打开它。新的数据库页校验和在SQL Server 2005或2008是默认打开的。

17)页校验和可以纠正错误。

页面校验和只能发现错误,而不是像网络协议中的CRC校验码那样纠正一个错误。

17)当打开页校验和时,页面校验和被添加到数据库中的每一页。

错误,事实上,当打开页检查时,在前台或后台不会有修改页面的线程。只有当您重新创建索引或修改页面时,页面检查总和才会添加到页面中。

17)可以通过阅读页面将支票金额添加到页面中。

错误,只要是读到内存和修改过的网页,然后写回磁盘,网页可以检查和添加到页面。

17)当数据库的页面验证模式从破损页面检测变成页面检查和方法时,所有损坏的页面检测信息将丢失。

错误,每个页面都知道它的保护模式是撕裂页面检测,页校验或完全没有。如前所述,只有页面被修改,页面验证的方式将被修改。换句话说,一个数据库可以存在,有些页被撕页的检测,和其他页面的检查方法。我有一个更详细的对这部分的文章:在存储引擎:不打开页面校验和丢弃任何撕页。

当错误发生时,可以立即检测到页校验和(17)。

SQL Server MVP盖尔肖揭示了这种误解,当然,在缓冲池读入内存进行验证之前,还不会找到损坏的页面。