En SQL Server 2000, si desea identificar páginas corruptas, la opción de base de datos TORN_PAGE_DETECTION debe establecerse en TRUE.
Pero en SQL 2005 y versiones posteriores, una nueva configuración PAGE_VERIFY reemplazó la antigua TORN_PAGE_DETECTION que permite elegir entre dos tipos diferentes de verificación de página: TORN_PAGE_DETECTION y CHECKSUM.
Ahora viene la pregunta de cuál configurar: TORN_PAGE_DETECTION o CHECKSUM.
TORN_PAGE_DETECTION: escribe un bit por cada 512 bytes en una página, lo que le permite detectar cuándo una página no se escribió correctamente en el disco. El problema es que no le dirá si los datos almacenados en esos 512 bytes son realmente correctos o no debido al hecho de que un par de bytes pueden haberse escrito incorrectamente.
CHECKSUM: calculará una suma de verificación de la página tanto cuando se escribe una página como cuando se lee una página, suponiendo que tenga una suma de verificación.
El SQL Server calcula la suma de comprobación en función del patrón de bits en la página, la almacena en el encabezado de la página y luego emite una E / S para escribir la página. Cuando el SQL Server lee la página, vuelve a calcular la suma de verificación utilizando la misma lógica y luego la compara con el valor disponible en el encabezado de la página. Si el valor de la suma de comprobación coincide, se supone que la página no se corrompió durante el ciclo de escritura-lectura.
Dado que el costo de calcular la suma de verificación se incurre en cada página de lectura y escritura, puede aumentar la sobrecarga de la CPU y posiblemente afectar el rendimiento de su carga de trabajo. Otra cosa a tener en cuenta es que la suma de comprobación no es exclusiva para un patrón de bits específico en la página. Dos páginas posiblemente se pueden asignar al mismo valor de suma de verificación. Por lo tanto, existe la posibilidad remota de que la corrupción de la página no se detecte.
Referencia: suma de comprobación en SQL2005
Para responder específicamente a sus preguntas:
Creo que Checksum se introdujo en SQL2005 y que actualizar o restaurar una base de datos desde una versión anterior mantendría su método de verificación de página anterior. es decir, no hubo actualización implícita.
Sí, CHECKSUM se introdujo en SQL Server 2005 y es el PREDETERMINADO . Cuando actualice de 2000 a 2005, debe cambiar explícitamente la opción de base de datos Verificación de página para usar CHECKSUM.
Si restaura la base de datos ya creada en sql 2005 a otro servidor que ejecuta sql 2005, no tiene que configurarla. Persistirá a lo que haya configurado la opción de verificación de página.
No he tenido éxito en la investigación cuando llegó la Detección de página rota
De: http://support.microsoft.com/kb/230785
Versiones de SQL Server anteriores a 7.0
Las versiones de SQL Server anteriores a la 7.0 no proporcionaban paridad de registro ni facilidades de detección de bits rotos. De hecho, esas versiones pueden escribir la misma página de registro varias veces hasta que los registros de registro llenen la página de registro de 2 KB. Esto puede exponer transacciones que se han confirmado con éxito. Si la página de registro se reescribe durante una falla, un sector con la transacción confirmada puede no reescribirse correctamente.
Por lo tanto, TORN_PAGE_DETECTION ha existido desde SQL Server 7.0. Incluso entonces, el valor predeterminado era que no estaba habilitado (mismo enlace) .
Nota La detección de página rota no está habilitada de forma predeterminada en SQL Server 7.0. Consulte sp_dboption para saber cómo habilitar la detección en su sistema.
Por lo tanto, si la base de datos se desarrolló contra una instancia 7.0 y se actualizó posteriormente, se habría actualizado con la opción PAGE VERIFY existente de NONE (como señaló @ThomasStringer en su respuesta).
Editar: 24/09/2013 Para mejorar la respuesta:
Refiriéndome a mis notas internas de SQL Server de SQLSkills, descubrí que usando un volcado de página, puede verificar si la detección de bits rotos - TORN_PAGE_DETECTION o CHECKSUM estaba habilitada o no:
use database_name -- change here for your database !!
checkpoint
go
dbcc traceon (3604) -- send output to screen
go
dbcc page (dbaalert, 1,1,0)
dbcc traceoff (3604) -- turn off the trace flag
go
m_tornBits : contiene la suma de comprobación de la página o los bits que fueron desplazados por los bits de protección de página desgarrada, dependiendo de qué forma de protección de página esté activada para la base de datos.
Nota : No tengo ninguna versión anterior de servidor sql ejecutándose. A continuación se confirma desde el servidor SQL 2000 y superior . Si tienes un 7.0 o 6.5 corriendo, puedes confirmarlo también :-)