Error de aserción en un servidor reflejado al usar SQL Server arquitectura de creación de reflejo

En este artículo se describe un error de aserción de Microsoft SQL Server que puede producirse en un servidor asociado al usar SQL Server arquitectura de creación de reflejo.

Versión original del producto: SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008
Número de KB original: 2729953

Síntomas

En SQL Server arquitectura de creación de reflejo, es posible que encuentre un error de comprobación de aserción de SQL Server en el servidor asociado (reflejado). En tal caso, compruebe el registro de errores de SQL Server para obtener más información. En el registro, encontrará un mensaje de error similar al siguiente. Este error suele significar que debe volver a generar el par reflejado.

aserción de SQL Server: archivo: loglock.cpp, line=834 Failed Assertion = 'result == LCK_OK'. Este error puede estar relacionado con el tiempo. Si el error persiste después de volver a ejecutar la instrucción, use DBCC CHECKDB para comprobar la integridad estructural de la base de datos o reinicie el servidor para asegurarse de que las estructuras de datos en memoria no estén dañadas.

Error: 3624, gravedad: 20, estado: 1.

Normalmente, un error de aserción se debe a un error de software o a daños en los datos. Para comprobar si hay daños en la base de datos, considere la posibilidad de ejecutar DBCC CHECKDB. Si acepta enviar volcados de memoria a Microsoft durante la instalación, se enviará un minivolcado a Microsoft. Una actualización podría estar disponible desde Microsoft en el Service Pack más reciente o en un QFE del soporte técnico.

Nota:

Cuando se produce este problema, se genera un archivo minivolcado en la carpeta de registro de errores SQL Server. Este archivo tiene un nombre similar al nombre de archivo SQLDumpnnnn.mdmp .

Causa

Este problema puede producirse en diferentes escenarios. Cada escenario tiene una causa y resolución diferentes, y cada escenario puede provocar el mismo mensaje de error y error de aserción.

Nota:

  • Aunque la firma de error parece ser muy específica, el error real se debe a una aserción que produjo un error. Por ejemplo, el error podría deberse a una aserción que realiza una comprobación proactiva en el código SQL Server que valida las condiciones correctas para que se produzca un error lo más limpio posible en lugar de provocar un bloqueo en todo el proceso.
  • No puede determinar fácilmente la causa real. Los servicios de soporte al cliente de Microsoft suelen determinar la causa. Normalmente, se realiza recopilando el archivo de copia de seguridad completo de la base de datos principal y las copias de seguridad del registro de transacciones que cubren el tiempo del problema. Además, puede ser necesario un archivo de volcado de proceso completo del reflejo para reproducir el problema en una configuración específica.

Solución

Para resolver este problema, obtenga la corrección más reciente de la versión de SQL Server. Para obtener más información, consulte la tabla siguiente.

Causa Artículo de Knowledge Base Primera corrección en
Comportamiento de bloqueo diferente entre el elemento principal y el reflejo 2938828 FIX: la creación de reflejo de la base de datos alcanza la aserción y la sesión de creación de reflejo muestra el estado suspendido en SQL Server 2012 o SQL Server 2014 2931693 actualización acumulativa 1 para SQL Server 2014, 2931078 actualización acumulativa 9 para SQL Server 2012 SP1
Inserción masiva/BCP con Check_Constraints OFF SQL Server 2012
Cambio de las claves de cifrado: clave maestra de base de datos, clave maestra de instancia del servidor SQL Server 2012

Nota:

  • En la tabla anterior, la última columna enumera solo la primera compilación que contiene la corrección. Dado que SQL Server compilaciones son acumulativas, las compilaciones posteriores, como SQL Server 2014 SP1, contienen esas correcciones. Sin embargo, esas compilaciones no aparecen en la tabla.
  • Para obtener más información sobre cómo obtener el Service Pack más reciente para la versión de SQL Server, vea Determinar la versión, la edición y el nivel de actualización. El escenario BCP/Inserción masiva es un escenario común que sigue sin fijarse para SQL Server 2008 y SQL Server 2008 R2, y es la causa más probable conocida de lck_ok aserciones en esas versiones. El problema se corrigió por primera vez en SQL Server 2012. La razón para no corregir esto en las versiones anteriores es que requiere una nueva arquitectura de SQL Server internos del registro de transacciones. Este cambio solo se puede incluir con una versión principal de SQL Server.

Vea también

Aserción al ejecutar la inserción masiva o BCP