Compartir a través de


MSSQLSERVER_855

Se aplica a:SQL Server

Detalles

Atributo Value
Nombre de producto SQL Server
Id. de evento 855
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico BAD_MEMORY_OUTSIDE_BPOOL
Texto del mensaje Se detectaron 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.

Explicación

Este mensaje indica que SQL Server detectó una página de memoria dañada 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 no se puede recuperar de estos escenarios y registra este mensaje.

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.

Más información

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áginas de memoria dañadas mediante el siguiente conjunto de API:

  • GetMemoryErrorHandlingCapabilities
  • RegisterBadMemoryNotification
  • BadMemoryCallbackRoutine

SQL Server agrega compatibilidad para estas notificaciones en Microsoft SQL Server 2012 (11.x) y en versiones posteriores. Durante el inicio de SQL Server, SQL Server comprueba si el hardware es compatible con 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 entra en acción cuando SQL Server recibe estas notificaciones. Al recibirlas, SQL Server tiene que recorrer en iteración todo el grupo de búferes y descubrir la dirección de cada búfer asignado. Después, SQL Server usa la API QueryWorkingSetEX para comprobar si alguna de las páginas de memoria que respaldan la página de datos está marcada como dañada. 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 esa página de datos o ese grupo de búferes no se han modificado o no están procesando la E/S, SQL Server puede descartar y anular la confirmación de la página de datos. Después, SQL Server registra el mensaje siguiente:

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 otros errores, como el error 824.

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

Se detectaron 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 849 de SQL Server para evitar que SQL Server se registre con el sistema operativo para recibir notificaciones de errores de memoria. Pero tenga en cuenta que la habilitación de la marca de seguimiento 849 impedirá que SQL Server reciba notificaciones de memoria dañada 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 el hardware compatible.

También debe tener presente que, cuando SQL Server registra estas notificaciones de errores de memoria, el proceso del sistema de escritura diferida no realiza comprobaciones de página 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.