Captura de datos modificados y otras características de SQL Server

En este tema se describe cómo interactúan las características siguientes con la captura de datos modificados:

  • Seguimiento de cambios

  • Creación de reflejo de la base de datos

  • Replicación transaccional

  • Restaurar o asociar una base de datos habilitada para la captura de datos modificados

Seguimiento de cambios

La captura de datos modificados y el seguimiento de cambios pueden habilitarse en la misma base de datos. No se requiere ninguna consideración especial. Para obtener más información, vea Trabajar con el seguimiento de cambios (SQL Server).

Creación de reflejo de la base de datos

Se puede reflejar una base de datos que está habilitada para la captura de datos modificados. Para asegurarse de que la captura y la limpieza se producen automáticamente tras una conmutación por error siga estos pasos:

  1. Asegúrese de que el Agente SQL Server se ejecute en la nueva instancia del servidor principal.

  2. Cree el trabajo de captura y el trabajo de limpieza en la nueva base de datos principal, la antigua base de datos de reflejo. Para crear los trabajos, use el procedimiento almacenado sp_cdc_add_job.

Para ver la configuración actual de un trabajo de captura o limpieza, use el procedimiento almacenado sys.sp_cdc_help_jobs en la nueva instancia de servidor principal. Para una base de datos dad, el trabajo de captura se denomina.database_name_capture y el trabajo de limpieza se denomina cdc.database_name_cleanup, donde database_name es el nombre de la base de datos.

Para cambiar el trabajo de configuración, use el procedimiento almacenado sys.sp_cdc_change_job.

Para obtener información acerca de la creación de reflejo de la base de datos, vea Creación de reflejo de base de datos (SQL Server).

Replicación transaccional

La captura de datos modificados y la replicación transaccional pueden coexistir en la misma base de datos, pero el rellenado de las tablas de cambios se trata de forma diferente cuando se habilitan ambas características. La captura de datos modificados y la replicación transaccional siempre utilizan el mismo procedimiento, sp_replcmds, para leer los cambios del registro de transacciones. Cuando la captura de datos modificados se habilita sola, un trabajo del Agente SQL Server llama a sp_replcmds. Cuando ambas características están habilitadas en la misma base de datos, el Agente de registro del LOG llama a sp_replcmds. Este agente rellena las tablas de cambios y las tablas de base de datos de distribución. Para obtener más información, vea Agente de registro del LOG de replicación.

Considere un escenario en el que la captura de datos modificados está habilitada en la base de datos AdventureWorks2012 y se habilitan dos tablas para la captura. Para rellenar las tablas de cambios, el trabajo de captura llama a sp_replcmds. La base de datos se habilita para la replicación transaccional y se crea una publicación. Ahora, el Agente de registro del LOG se crea para la base de datos y se elimina el trabajo de captura. El Agente de registro del LOG continúa examinando registro desde el último número de secuencia de registro que se confirmó en la tabla de cambios. De este modo se asegura de la coherencia de datos en las tablas de cambios. Si la replicación transaccional está deshabilitada en esta base de datos, se quita el Agente de registro del LOG y vuelve a recrear el trabajo de captura.

[!NOTA]

Cuando el Agente de registro del LOG se utiliza para la captura de datos modificados y la replicación transaccional, los cambios replicados se escriben primero en la base de datos de distribución. A continuación, los cambios capturados se escriben en las tablas de cambios. Se confirman conjuntamente ambas operaciones. Si hay alguna latencia al escribir en la base de datos de distribución, habrá una latencia correspondiente antes de que los cambios aparezcan en las tablas de cambios.

La opción proc exec de la replicación transaccional no está disponible cuando la captura de datos modificados está habilitada.

Restaurar o asociar una base de datos habilitada para la captura de datos modificados

SQL Server utiliza la lógica siguiente para determinar si la captura de datos modificados permanece habilitada una vez restaurada o asociada una base de datos:

  • Si una base de datos se restaura en el mismo servidor con el mismo nombre, la captura de datos modificados sigue habilitada.

  • Si una base de datos se restaura en otro servidor, de forma predeterminada la captura de datos modificados está deshabilitada y se eliminan todos los metadatos relacionados.

    Para conservar la captura de datos modificados, utilice la opción KEEP_CDC al restaurar la base de datos. Para obtener más información acerca de esta opción, vea RESTORE.

  • Si una base de datos se desasocia y asocia en el mismo servidor o en otro servidor, la captura de datos modificados sigue estando habilitada.

  • Si una base de datos se adjunta o restaura con la opción KEEP_CDC en cualquier edición distinta de Enterprise, la operación se bloquea porque la captura de datos modificados requiere SQL Server Enterprise. Se muestra el mensaje de error 934:

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

Puede usar sys.sp_cdc_disable_db para quitar la captura de datos modificados desde una base de datos restaurada o asociada.

Vea también

Conceptos

Administrar y supervisar la captura de datos modificados (SQL Server)