Se produce un error en el trabajo de captura CDC al procesar los cambios de una tabla con el tipo de datos CLR del sistema (geometry, geography o hierarchyid).
Este artículo le ayuda a solucionar el problema en el que se produce un error en un trabajo de captura CDC cuando se procesan los cambios de una tabla que tiene un tipo de datos CLR del sistema (geometry, geography o hierarchyid).
Se aplica a: SQL Server
Número de KB original: 4538384
Síntomas
Considere el caso siguiente:
- Habilite la característica Captura de datos modificados (CDC) en una tabla que tenga el tipo de datos CLR del sistema, como geometry, geography o hierarchyid.
- El trabajo de captura CDC (examen) está procesando los cambios relacionados con otras tablas. El proceso aún no ha alcanzado la tabla que tiene el tipo de datos CLR del sistema.
- Puede realizar algunos cambios en el lenguaje de manipulación de datos (DML) en la tabla que tiene el tipo de datos CLR del sistema. A continuación, se realizan cambios en el lenguaje de definición de datos (DDL) en la misma tabla (por ejemplo, se agrega una columna).
En este escenario, cuando el trabajo de captura CDC comienza a procesar la tabla que tiene el tipo de datos CLR del sistema, se produce un error y devuelve el siguiente mensaje de error:
Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start LineNumber ]
El proceso log-Scan no pudo construir un comando replicado a partir del número de secuencia de registro (LSN) {nnnn: nnn: nn}. Realice una copia de seguridad de la base de datos de publicación y póngase en contacto con los servicios de soporte al cliente.
Mensaje 22859, nivel 16, estado 2, procedimiento sp_replcmds, linenumber [número de línea de inicio de lote ]
Error del proceso de examen del registro al procesar las entradas de registro. Consulte los errores anteriores en la sesión actual para identificar la causa y corregir los problemas asociados.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, LineNumber [Batch Start LineNumber ]
Se terminó la instrucción.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, LineNumber[Batch Start LineNumber ]
Error en la llamada a sp_MScdc_capture_job por el trabajo de captura para la base de datos "DatabaseName". Consulte los errores anteriores para identificar la causa del error.
Además, se puede registrar la siguiente entrada en el registro de errores:
Error: 913, Gravedad: 16, Estado: 16. No se pudo encontrar id. de base de datos. Puede que la base de datos no esté activa todavía o que esté en transición. Vuelva a emitir la consulta cuando la base de datos esté disponible. Si no cree que este error se debe a una base de datos que está realizando la transición de su estado y este error continúa produciéndose.
Más información
Este problema no se produce si el trabajo de captura CDC procesa inicialmente solo el DML y, a continuación, procesa el cambio de DDL en la siguiente ejecución.
Solución alternativa
Para solucionar este problema, pruebe cualquiera de los métodos siguientes:
Evite usar los tipos de datos problemáticos (geometry, geography, hierarchyid) junto con CDC.
Asegúrese de que no tiene cambios en DML al realizar cambios de DDL en tablas que tengan tipos de datos geometry, geography o hierarchyid. Para evitar este problema, siga estos pasos:
- Desactiva todas las DML en la tabla.
- Ejecute un trabajo de captura para procesar los cambios.
- Ejecute DDL para la tabla.
- Ejecute un trabajo de captura para procesar los cambios de DDL.
- Vuelva a habilitar el procesamiento DML.
Nota:
Si sigue experimentando este problema, deshabilite y vuelva a habilitar CDC en la tabla.