Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img
25 de Marzo, 2011 · CHECKSUM

Integridad en las Páginas de Datos. CHECKSUM. TORN_PAGE_DETECTION. SQL Server.

 Desde las versiones de SQL Server 2005 en adelante, se ha incorporado una nueva opción en la verificación de las páginas de datos. Ya que se pueden producir errores de disco que dañen la integridad de los datos. Estos errores los suelen derivar problemas de suministro eléctrico o errores en el hardware del disco que pueden ocurrir en el momento en que se está escribiendo en el propio disco..

 

 ¿Que son las Páginas de datos?

 

 La unidad fundamental del almacenamiento de los datos en SQL Server es la página. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de una base de datos se divide lógicamente en páginas numeradas de forma contigua de 0 a n. Las operaciones de E/S de disco se realizan a nivel de página. Es decir, SQL Server lee o escribe páginas de datos enteras. El tamaño de página es de 8 KB. Esto significa que las bases de datos de SQL Server tienen 128 páginas por megabyte. Cada página empieza con un encabezado de 96 bytes, que se utiliza para almacenar información del sistema acerca de la página. Para más información (http://technet.microsoft.com/es-es/library/ms190969.aspx)

 

 

PAGE_VERIFY

 

Page_Verify, es la propiedad de base de datos, que nos permite seleccionar el nivel de chequeo que garantiza la integridad de las páginas de datos.

 Tenemos 3 posibles opciones para configurar PAGE_VERIFY: CHECKSUM, TORN_PAGE_DETECTION o a NONE. Para conocer que opción tiene activada nuestras bases de datos, basta con ejecutar la consulta:

Select name, page_verify_option_desc from sys.databases

 En donde la columna page_verify_option_desc, nos dirá dicha opción. PAGE_VERIFY se puede reconfigurar sin dejar la base de datos sin conexión, ni bloquearla ni impedir la simultaneidad en ella.

 

 Opción CHECKSUM de PAGE_VERIFY, viene incorporada desde SQL 2005. Calcula una suma de comprobación del contenido de toda la página y almacena el valor en el encabezado de página cuando se escribe una página en el disco. Cuando la página se lee, la suma de comprobación se vuelve a calcular y se compara con el valor de suma de comprobación almacenado en el encabezado de página. Si el valor no coincide, se genera el mensaje de error 824 (indica un error de la suma de comprobación) para el registro de errores de SQL Server, así como para el registro de eventos de Windows. Un error de la suma de comprobación indica un problema de en el acceso a disco. Para determinar la causa, es necesario investigar el hardware, los controladores de firmware, la BIOS, los controladores de filtro (por ejemplo, software antivirus)… Para forzar esta opción:

 

alter database TuBaseDeDatos

SET PAGE_VERIFY CHECKSUM

 

 Opción  TORN_PAGE_DETECTION de PAGE_VERIFY, En las versiones anteriores a SQL 2005, esta era la única posibilidad cuando se quería activar la opción de Page_Verify. Guarda una pauta específica de 2 bits por cada sector de 512 bytes en la página de base de datos de 8 kilobytes (KB) y la almacena en el encabezado de página de la base de datos al escribir la página en el disco. Si la página se lee desde el disco, los bits almacenados en el encabezado de página se comparan con la información del sector de la página real. Si los valores no coinciden indican que solamente se ha escrito en el disco una parte de la página. En esta situación, se genera el mensaje de error 824 (indica un error de página rasgada) tanto para el registro de errores de SQL Server como para el registro de eventos de Windows. Las páginas rasgadas se suelen detectar mediante la recuperación de la base de datos si se trata realmente de la escritura incompleta de una página. No obstante, errores de acceso a disco pueden generar una página rasgada en cualquier momento. Para forzar esta opción:

 

alter database TuBaseDeDatos

SET PAGE_VERIFY TORN_PAGE_DETECTION

 

 Opción  NONE de PAGE_VERIFY. Las escrituras de página de bases de datos no generan un valor CHECKSUM o TORN_PAGE_DETECTION. SQL Server no comprobará ninguna suma de comprobación o página rasgada durante una lectura, ni siquiera si hay un valor CHECKSUM o TORN_PAGE_DETECTION en el encabezado de página. Para forzar esta opción:

 

alter database TuBaseDeDatos

SET PAGE_VERIFY NONE

 

 

CHECKSUM o TORN_PAGE_DETECTION

 

 CHECKSUM y TORN_PAGE_DETECTION se excluyen mutuamente. No se pueden habilitar ambas opciones al mismo tiempo. TORN_PAGE_DETECTION utiliza menos recursos para calcular la integridad, y proporciona un chequeo de menor integridad que CHECKSUM.

 Aunque tener activada cualquiera de estas dos pociones, no supone una penalización en el performance de la base de datos, ya que estos chequeos de integridad sobre las paginas de datos, son prácticamente imperceptibles, CHECKSUM es considerado para un mejor rendimiento ya que efectúa un calculo de integridad por cada pagina de datos completa, frente a TORN_PAGE_DETECTION que efectúa un calculo por cada sector de 512 bytes en la página de base de datos de 8 kilobytes (KB). (En los accesos al disco, siempre se leen paginas completas)

 En SQL Server 2005 y SQL Server 2008, el valor predeterminado es CHECKSUM. En SQL Server 2000, TORN_PAGE_DETECTION es el valor predeterminado.

 Si una base de datos de usuario o del sistema SQL 2000 se actualiza a SQL Server 2005 o a SQL Server 2008, se conserva el valor de PAGE_VERIFY (NONE o TORN_PAGE_DETECTION). Se recomienda modificar a CHECKSUM. 

En las versiones anteriores de SQL Server, la opción de base de datos PAGE_VERIFY se establece a NONE para la base de datos tempdb y no se puede modificar. En SQL Server 2008, el valor predeterminado de la base de datos tempdb es CHECKSUM para las nuevas instalaciones de SQL Server. Se recomienda usar CHECKSUM para la base de datos tempdb.

 

 Errores en la comprobación con PAGE_VERIFY

 Si se detecta un error de suma de comprobación o de página rasgada, puede realizar una recuperación mediante la restauración de los datos o una regeneración del índice, si el error se limita únicamente a las páginas de índices. Si detecta un error de suma de comprobación, ejecute DBCC CHECKDB para determinar el tipo de página o páginas de base de datos afectadas. Para lo cual sugerimos la lectura (http://microsoftsqlsecret.fullblog.com.ar/integridad-y-corrupcion-en-las-bases-de-datos-dbcc-checkdb.html).

 Aunque la restauración de los datos resolverá el problema de los datos dañados, es necesario diagnosticar y corregir la causa (por ejemplo, un error del hardware de disco) lo antes posible, para evitar errores continuos.

 Si SQL Server detecta un error tras la comprobación e la pagina en disco, realizará 4 intentos de comprobación. Si la lectura se desarrolla correctamente en uno de los reintentos, se escribe un mensaje en el registro de errores. Si los reintentos no se realizan correctamente, el comando genera el mensaje de error 824.

 

 

Fuentes.

Microsoft, msdn.

 

Apunte y recopilación por Norman M. Pardell

 

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

publicado por normanmpardell a las 20:07 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Tomo I. Memoria RAM. Optimización de sistemas de 32 y 64 bits. SQL Server 2008.
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad