Compartir a través de


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 por el que se produce un error en un trabajo de captura CDC al procesar 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

Imagine la siguiente situación:

  • La característica Captura de datos modificados (CDC) se habilita en una tabla que tiene 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 llegado a la tabla que tiene el tipo de datos CLR del sistema.
  • Se realizan algunos cambios de Lenguaje de manipulación de datos (DML) en la tabla que tiene el tipo de datos CLR del sistema. A continuación, realiza cambios en el lenguaje de definición de datos (DDL) en la misma tabla (por ejemplo, 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 de Log-Scan no pudo construir un comando replicado a partir del número de secuencia de registro (LSN) {nnnnnnnnn: nnnnnnnnn: nnnn}. Realice una copia de seguridad de la base de datos de publicaciones y póngase en contacto con los servicios de soporte al cliente.
Msg 22859, Level 16, State 2, Procedure sp_replcmds, Line LineNumber [Batch Start LineNumber ]
Error en el proceso de examen de registros al procesar registros. Consulte 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, Line LineNumber [Batch Start LineNumber ]
La instrucción se ha finalizado.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, Line LineNumber[Batch Start LineNumber ]
Error en la llamada a sp_MScdc_capture_job por el trabajo de captura de la base de datos "DatabaseName". Examine los errores anteriores para ver la causa del error.

Además, la siguiente entrada puede registrarse en el registro de errores:

Error: 913, gravedad: 16, estado: 16. No se encontró id. de base de datos. Es posible que la base de datos no esté activada todavía o que esté en transición. Vuelva a emitir la consulta una vez que la base de datos esté disponible. Si no cree que este error se deba a una base de datos que está realizando la transición de su estado y este error continúa ocurriendo.

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 uno 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 DML a bordo al realizar cambios de DDL en tablas que tienen tipos de datos geometry, geography o hierarchyid. Para evitar este problema, siga estos pasos:

    1. Detenga todo DML en la tabla.
    2. Ejecute un trabajo de captura para procesar los cambios.
    3. Ejecute DDL para la tabla.
    4. Ejecute un trabajo de captura para procesar los cambios de DDL.
    5. Vuelva a habilitar el procesamiento DML.

    Nota:

    Si sigue experimentando este problema, deshabilite y vuelva a habilitar CDC en la tabla.