Share via


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

  • Restauración o asociación de base de datos

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 Seguimiento de cambios.

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 en el reflejo, siga estos pasos:

  1. Asegúrese de que el Agente SQL Server se está ejecutando en el reflejo.

  2. Cree el trabajo de captura y el trabajo de limpieza en el reflejo después de que la entidad de seguridad haya conmutado por error al reflejo. Para crear los trabajos, use el procedimiento almacenado sys.sp_cdc_add_job (Transact-SQL).

Para obtener más información acerca de la creación de reflejo de la base de datos, vea Creación de reflejo de la base de datos.

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. Para obtener más información, vea Trabajo de captura. 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 AdventureWorks2008R2 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 esta forma se asegura de la coherencia de los 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.

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 asocia 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 932:

    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 utilizar sys.sp_cdc_disable_db para quitar la captura de datos modificados desde una base de datos restaurada o asociada.