Hen*_*sen 5 sql-server master-data-services sp-blitz
我已经在我们的测试数据库服务器上运行了 sp_blitz(版本 45)。它抱怨
数据库 [MDS] 具有用于页面验证的 TORN_PAGE_DETECTION。SQL Server 可能更难识别存储损坏并从中恢复。考虑使用 CHECKSUM 代替。
但这是来自微软的数据库。
将页面验证更改为 CheckSum 是否明智?
还是应该等微软发布新版本的MDS?
Sha*_*nky 11
我建议你遵循sp_blitz推荐的内容。您可以将选项更改为CHEKSUM。校验和可能能够检测到比 torn_page 多的问题。
Torn page 允许您检测页面是否成功写入磁盘。它不会检查页面内部的不一致之处。而校验和执行更彻底的检查。说了这么多,你一定知道there is no replacement of good backup and you must (if possible) run dbcc checkdb every day。
保罗所说的,引用自此 SQLServercentral 链接
差异是不可测量的小 - 它所做的只是从 16 个扇区中的每个扇区中获取前两位,将它们存储在页头中,然后将交替的位模式写入每个扇区的两位中。当再次阅读页面时,情况正好相反。与通过读取整个页面并将内容添加到“校验和”中的页面校验和所做的工作相比,几乎没有什么。
但是,残页检测不会检测扇区内的损坏 - 仅当写入以某种方式失败时。从 2005 年起,您应该始终启用页面校验和以获得此额外好处 - 1-2% 的 CPU 不应该是问题(否则您会遇到其他问题)。
一些关于此的博客文章:如何判断 IO 子系统是否导致损坏?和在存储引擎内部:打开页面校验和会丢弃任何撕页保护吗?。
以下是BOL文件要说的
使用 PAGE_VERIFY 选项时,请考虑以下要点: • 默认值为 CHECKSUM。
• 当用户或系统数据库升级到 SQL Server 2005 或更高版本时,将保留 PAGE_VERIFY 值(NONE 或 TORN_PAGE_DETECTION)。
We recommend that you use CHECKSUM在 SQL Server 的早期版本中,对于 tempdb 数据库,PAGE_VERIFY 数据库选项设置为 NONE,并且无法修改。在 SQL Server 2008 及更高版本中,对于 SQL Server 的新安装,tempdb 数据库的默认值为 CHECKSUM。升级安装 SQL Server 时,默认值保持为 NONE。
The option can be modified. We recommend that you use CHECKSUM for the tempdb database.
注意:如果启用页面校验和,则不会为数据库的整个页面启用。没有这样的过程可以为所有页面设置此选项。当某个页面将是read in memory, changed, and written back磁盘校验和时,将为该页面启用。因此,您必须执行诸如索引重建之类的操作以将尽可能多的页面带入内存。Paul Randal 有关于 Checksum 的 Myth 部分,请阅读。在 SQL Server 2005 和 2008 上创建的数据库将自动启用页面校验和,除非用户更改模型数据库中的设置。