在 Microsoft SQL Server 中,我将一些较旧的数据库设置为“Torn Page Detection”而不是“Checksum”页面验证。
我是否需要确定给定的 SQL Server 数据库是否与“校验和”页面验证设置“兼容”,或者它是否可以应用于任何 SQL 数据库?
数据库是否知道它们的设置是什么?它是由 SQL Server 透明处理的设置,对吗?
我意识到更改只会影响配置生效后更改的页面。
在 Microsoft SQL Server 中,我将一些较旧的数据库设置为“Torn Page Detection”而不是“Checksum”页面验证。
我是否需要确定给定的 SQL Server 数据库是否与“校验和”页面验证设置“兼容”,或者它是否可以应用于任何 SQL 数据库?
数据库是否知道它们的设置是什么?它是由 SQL Server 透明处理的设置,对吗?
我意识到更改只会影响配置生效后更改的页面。
简短的回答:没有
您不需要检查兼容性;是的,它可以应用于任何数据库。它是兼容的,即使它是 80 (SQL Server 2000) 兼容模式数据库,您也可以启用 Checksum,而且很可能应该启用。
这是透明的,因为您的表看起来或行为没有不同,您的应用程序不知道它,等等。至于“数据库知道”,这取决于您的意思。从应用程序连接?不会。但是与文件交互的 SQL Server 存储引擎知道它,因此它会在写入时进行检查,但同样这对您的应用程序和用户是透明的。
另一种考虑:
您是对的,只有在生效后才更改页面是一件好事。在这样做之后的某个时候进行索引重建是接触大量页面的一种好方法,而且不是一个坏主意。
并观察性能/CPU 开销。有一个与校验和相关的“成本”,尽管这个成本并不像您担心的那么高。这篇文章虽然是为 2005 年写的,但也谈到了其中的一些担忧,但同样很少有人因此而产生问题。