Compartir vía


MSSQLSERVER_856

Se aplica a: SQL Server

Detalles

Attribute Valor
Nombre del producto SQL Server
Id. de evento 856
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico BAD_MEMORY_CLEAN_DATABASE_PAGE
Texto del mensaje SQL Server ha detectado daños en la memoria de hardware en la base de datos '%ls', id. de archivo: %u, id. de página; %u, dirección de memoria: 0x%I64x y ha recuperado correctamente la página

Explicación

Este mensaje indica que SQL Server detectó una página de memoria incorrecta en un objeto almacenado en caché fuera del grupo de búferes. Este mensaje se genera en sistemas que admiten la capacidad de recuperarse de errores de memoria. SQL Server corrige estos errores de memoria descartando las páginas de memoria dañadas que no se modifican y registra este mensaje de error. Si la página de memoria dañada se ha modificado (es decir, es una página desfasada), se produce el error 824 (MSSQLSERVER_824).

Acción del usuario

Debe realizar comprobaciones de hardware o del sistema para determinar si existen problemas de CPU o de memoria. Asegúrese de que se han aplicado 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. Siempre que vea este error, considere también la posibilidad de ejecutar DBCC CHECKDB en todas las bases de datos de esta instancia.

Información adicional

En los equipos con hardware más reciente que ejecutan Windows Server 2012 o una versión posterior, el hardware puede notificar al sistema operativo y a las aplicaciones de que las páginas de memoria (páginas del sistema operativo) están marcadas como dañadas o con errores. Las aplicaciones como SQL Server pueden registrar estas notificaciones de página de memoria incorrecta mediante el siguiente conjunto de API:

  • GetMemoryErrorHandlingCapabilities
  • RegisterBadMemoryNotification
  • BadMemoryCallbackRoutine

SQL Server agrega compatibilidad con estas notificaciones en Microsoft SQL Server 2012 (11.x) y versiones posteriores. Durante el inicio de SQL Server, SQL Server comprueba si el hardware admite esta nueva característica. Aparte de esto, recibirá el siguiente mensaje en el registro de errores:

<Datetime> Server Machine admite la recuperación de errores de memoria. La protección de memoria SQL está habilitada para recuperarse si se daña la memoria.

Actualmente, solo el grupo de búferes realiza acciones cuando SQL Server recibe estas notificaciones. Cuando recibe una notificación, SQL Server tiene que recorrer en iteración todo el grupo de búferes y detectar la dirección de cada búfer asignado. A continuación, SQL Server usa la QueryWorkingSetEX API para comprobar si alguna de las páginas de memoria que respaldan la página de datos está marcada como incorrecta. La estructura de salida PSAPI_WORKING_SET_EX_BLOCK que corresponde a esta página de memoria tendrá el elemento "Bad" establecido en 1 si se ha producido algún daño.

Si el grupo de búferes o la página de datos no se modifican o no procesan E/S, SQL Server puede descartar y anular la confirmación de la página de datos. A continuación, SQL Server registra el siguiente mensaje:

SQL Server ha detectado daños en la memoria de hardware en la base de datos '%ls', id. de archivo: %u, id. de página; %u, dirección de memoria: 0x%I64x y ha recuperado correctamente la página.

Cuando las consultas requieran esa página de datos de nuevo, el grupo de búferes puede volver a leerla desde el disco y devolver su contenido al grupo de búferes. También es posible que la versión en disco de la página esté en un estado dañado. En ese caso, SQL Server puede registrar errores adicionales, como el error 824.

Si el grupo de búferes usa la página incorrecta, pero algún otro objeto o estructura almacenados en caché, SQL Server registra el siguiente mensaje:

Se han detectado daños en la memoria de hardware que no pueden corregirse. El sistema puede volverse inestable. Compruebe el registro de eventos de Windows para obtener más detalles.

Si el servidor informa de errores de memoria, debe ponerse en contacto con el fabricante del hardware del equipo y realizar las acciones adecuadas, como ejecutar diagnósticos de memoria, actualizar el BIOS y el firmware, y reemplazar los módulos de memoria dañados.

Puede usar la marca de seguimiento de SQL Server 849 para evitar que SQL Server se registre con el sistema operativo para las notificaciones de error de memoria. Sin embargo, tenga en cuenta que habilitar la marca de seguimiento 849 impedirá que SQL Server reciba notificaciones de memoria incorrectas del sistema operativo. Por lo tanto, no se recomienda usar esta marca de seguimiento en circunstancias normales.

Además, tenga en cuenta que, de forma predeterminada, SQL Server recibirá estas notificaciones en hardware compatible.

También debe tener en cuenta que cuando SQL Server se registra para estas notificaciones de error de memoria, el proceso del sistema de escritura diferida no realiza comprobaciones de páginas constantes. Para obtener más información sobre las comprobaciones de páginas constantes, vea Procedimiento para solucionar el error Msg 832 (la página constante ha cambiado) en SQL Server.