Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo interactúan las siguientes características con la captura de datos modificados:
Seguimiento de cambios
La captura de datos modificados y el seguimiento de cambios se pueden habilitar en la misma base de datos. No se requiere ninguna consideración especial. Para obtener más información, vea Trabajar con Change Tracking (SQL Server).
Reflejo de la base de datos
Se puede reflejar una base de datos habilitada para la captura de datos modificados. Para asegurarse de que la captura y la limpieza ocurran automáticamente tras una conmutación por error, siga estos pasos:
Asegúrese de que el Agente SQL Server se está ejecutando en la nueva instancia del servidor principal.
Cree la tarea de captura y la tarea de limpieza en la nueva base de datos principal (la antigua base de datos reflejada). Para crear los trabajos, use el procedimiento almacenado sp_cdc_add_job .
Para ver la configuración actual de un trabajo de limpieza o captura, use el procedimiento almacenado sys.sp_cdc_help_jobs en la nueva instancia del servidor principal. Para una base de datos determinada, el trabajo de captura se denomina cdc. 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 la configuración de un trabajo, use el procedimiento almacenado sys.sp_cdc_change_job .
Para obtener información sobre la creación de reflejo de la base de datos, consulte Creación de reflejo de la 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 controla de forma diferente cuando ambas características están habilitadas. La captura de datos modificados y la replicación transaccional siempre usan el mismo procedimiento, sp_replcmds, para leer los cambios del registro de transacciones. Cuando la captura de datos modificados está habilitada por sí 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 lectura de registros 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, consulte Agente lector del registro 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, la tarea de captura llama a sp_replcmds. La base de datos está habilitada para la replicación transaccional y se crea una publicación. Ahora, se crea el Agente del Lector de Registro para la base de datos y se elimina la tarea de captura. El Agente lector de registros continúa escaneando el registro desde el último número de secuencia de registro que se confirmó en la tabla de cambios. Esto garantiza 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 se vuelve a crear el trabajo de captura.
Nota:
Cuando se usa el Agente de registro del Log Reader 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. Ambas operaciones se comprometen juntas. Si hay alguna latencia al escribir en la base de datos de distribución, habrá una latencia correspondiente antes de que aparezcan los cambios en las tablas de cambios.
La opción proc exec de replicación transaccional no está disponible cuando está habilitada la captura de datos modificados.
Restaurar o adjuntar una base de datos habilitada para la captura de datos modificados
SQL Server usa la siguiente lógica para determinar si la captura de datos modificados permanece habilitada después de restaurar o adjuntar una base de datos:
Si se restaura una base de datos en el mismo servidor con el mismo nombre de base de datos, la captura de datos modificados permanece habilitada.
Si se restaura una base de datos en otro servidor, de forma predeterminada se deshabilita la captura de datos modificados y se eliminan todos los metadatos relacionados.
Para conservar la captura de datos modificados, use la
KEEP_CDCopción al restaurar la base de datos. Para obtener más información sobre esta opción, consulte RESTORE.Si una base de datos está desasociada y adjunta al mismo servidor u otro servidor, la captura de datos modificados permanece habilitada.
Si se adjunta o restaura una base de datos con la
KEEP_CDCopción a 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 de una base de datos restaurada o adjunta.
Captura de Cambios de Datos y AlwaysON
Cuando se usa AlwaysON, la enumeración de cambios debe realizarse en la replicación secundaria para reducir la carga del disco en la principal.
Véase también
Administrar y supervisar la captura de datos modificados (SQL Server)