SQL Server error de aserción al intentar ejecutar una instrucción Bulk Insert o BCP
Este artículo le ayuda a resolver el problema que se produce al intentar ejecutar una BULK INSERT
operación o BCP
.
Versión original del producto: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Número de KB original: 2700641
Síntomas
Imagine la siguiente situación:
El servidor A y el servidor B ejecutan Microsoft SQL Server 2008 o SQL Server 2008 R2.
Configure la creación de reflejo de la base de datos entre el servidor A y el servidor B.
Ejecute una
BULK INSERT
instrucción oBCP
en la base de datos principal.Nota:
De forma predeterminada, la
CHECK_CONSTRAINTS
opción se establece en off al ejecutar unaBULK INSERT
instrucción oBCP
.La creación de reflejo de la base de datos se interrumpe y la sesión de creación de reflejo de la base de datos entra en el estado SUSPENDED.
En este escenario, se produce una aserción en el servidor reflejado. Por lo tanto, se crea un archivo de mini volcado en la carpeta de registro de SQL Server. Además, verá el siguiente error en el registro de errores de SQL Server en el servidor reflejado:
Nota:
Debe reinicializar la creación de reflejo de la base de datos para resolver este problema.
Causa
Este problema se produce porque la información de compatibilidad de bloqueo del registro de transacciones de la base de datos principal no se transfiere al servidor reflejado.
Solución alternativa
Para solucionar este problema, ejecute la BULK INSERT
instrucción o BCP
en la base de datos principal mediante la CHECK_CONSTRAINTS
opción .
Nota:
La CHECK_CONSTRAINTS
opción provoca un rendimiento más lento. Sin embargo, no se produce la aserción de bloqueo en el servidor reflejado.
Más información
Durante una BULK INSERT
operación o BCP
, una transacción secundaria desactiva la CHECK_CONSTRAINTS
opción . Esta transacción secundaria usa un bloqueo compatible con los bloqueos de transacción primarios. La información de compatibilidad se almacena en el registro de transacciones de la base de datos principal. Por lo tanto, la solicitud de bloqueo de transacción secundaria se concede en la base de datos principal.
Sin embargo, esta información de compatibilidad no se transfiere al servidor reflejado. Por lo tanto, la solicitud de bloqueo de transacción secundaria no es compatible con los bloqueos de transacción primarios en el servidor reflejado. Este escenario provoca la aserción en el servidor reflejado.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de