MSSQLSERVER_832

Se aplica a: SQL Server

Detalles

Attribute Valor
Nombre del producto SQL Server
Id. de evento 832
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico B_CONSTPAGECHANGED
Texto del mensaje Una página que debe haber sido constante ha cambiado (suma de comprobación esperada: <valor> esperado, suma de comprobación real: <valor> real, dbid> de base de datos<, archivo '<filename>', page pageno<>). Esto indica normalmente un error de memoria u otro tipo de daño de hardware o SO.

Explicación

Un factor externo ha provocado que una página de base de datos se modifique fuera del código normal del motor de SQL Server que se usa para cambiar las páginas de la base de datos. Las condiciones podrían ser estas:

  • Un subproceso que se ejecuta en el proceso de SQL Server que escribe incorrectamente en una página de base de datos. A eso se le suele denominar "scribbler".
  • Un problema de hardware o del sistema operativo en el que la memoria de respaldo de la página de base de datos no se modificó correctamente o está dañada.

Cuando SQL Server detecta este error de comportamiento 832 se genera.

Acción del usuario

Para encontrar la causa del error, considere las siguientes opciones:

  • Debe ejecutar las comprobaciones normales del hardware o del sistema para determinar si existe un problema relacionado con la memoria, la CPU u otro tipo de hardware. Asegúrese de que se han aplicado al sistema todos los controladores del sistema, las actualizaciones del sistema operativo y las actualizaciones de hardware. Considere la posibilidad de ejecutar los diagnósticos del fabricante del hardware, incluidas pruebas relacionadas con la memoria.
  • Evalúe qué archivos DLL "externos" se pueden cargar en SQL Server que podrían causar este problema, incluidos procedimientos almacenados extendidos, objetos COM u otros archivos DLL que pueden modificar incorrectamente la memoria de SQL Server reservada para las páginas de base de datos.

Siempre que vea este error, debería considerar inmediatamente la ejecución DBCC CHECKDB en la base de datos a la que hace referencia el <dbid> en el mensaje de error.

Información adicional

Este error lo detecta la tarea que se ejecuta en segundo plano y que a menudo se conoce como escritura diferida. (El "comando" para esta tarea se muestra como LAZY WRITER). Por tanto, este error no se devuelve a una aplicación cliente. El error se escribirá en el registro de eventos de la aplicación de Windows como EventID=832.

Solo se comprueban las páginas que no se han modificado en caché (o no están "desfasadas"). Este es el motivo por el que el mensaje usa el término "constante", porque la página no ha cambiado desde su lectura desde el disco. Además, la página se leyó de forma "correcta" desde el disco porque tiene un valor de suma de comprobación en la página y no ha encontrado ningún error de suma de comprobación (mensaje 824). Pero la página podría modificarse en algún momento después de este error y, posteriormente, podría escribirse en el disco con la modificación incorrecta. Si se produce este error, se calcula una nueva suma de comprobación en función de todas las modificaciones antes de su escritura en el disco. Por lo tanto, la página podría estar dañada en el disco, pero es posible que una lectura posterior desde el disco no desencadene un error de suma de comprobación. Es importante ejecutar DBCC CHECKDB en cualquier base de datos a la que se haga referencia en este error.

Es posible que ni siquiera DBCC CHECKDB notifique un error de una página en este estado después de su escritura en el disco. Esto se debe a que la modificación incorrecta podría encontrarse en ubicaciones de la página que no contienen ningún dato ni información importante sobre la estructura de las páginas o las filas, o bien podría tratarse de una modificación en los datos que CHECKDB no puede detectar.

Puede obtener más información sobre el mensaje 832 en las notas del producto: Elementos fundamentales de E/S de SQL Server, capítulo 2.