Habilita la captura de datos modificados (CDC)

En esta página, se describe cómo habilitar la captura de datos modificados (CDC) en Cloud SQL para SQL Server. Esta función está disponible para las bases de datos de tus instancias.

La CDC te permite captar muchos tipos de cambios. Puedes revisar la información general sobre los CDC, como se implementa en SQL Server, aquí. Consulta también Inhabilita y habilita la captura de datos modificados.

Después de conectarte a una instancia, el usuario sqlserver puede realizar muchas operaciones de la CDC.

Consulta también Trabaja con datos modificados.

Antes de comenzar

Antes de implementar la CDC en una instancia, revisa toda la información de esta página.

Confirma la disponibilidad de la función

La CDC está disponible para las siguientes versiones de bases de datos de Cloud SQL para SQL Server:

  • SQL Server 2017 Standard
  • SQL Server 2017 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise

Habilita la CDC y, luego, inicia los trabajos de captura de la CDC

Tu base de datos tiene los siguientes procedimientos almacenados, para que los use el usuario sqlserver:

  • msdb.dbo.gcloudsql_cdc_enable_db
  • msdb.dbo.gcloudsql_cdc_disable_db

Activa la CDC

Para activar esta función en una base de datos, ejecuta el procedimiento almacenado necesario y pasa el nombre de la base de datos. Por ejemplo:

EXEC msdb.dbo.gcloudsql_cdc_enable_db '[DATABASE_NAME]'

Desactiva la CDC

Para desactivar esta función en una base de datos, ejecuta un comando como el siguiente:

EXEC msdb.dbo.gcloudsql_cdc_disable_db '[DATABASE_NAME]'

Inicia trabajos de captura de la CDC

Una vez que la CDC está habilitada, los trabajos se crean para la captura y la limpieza. Los trabajos son invisibles para el usuario sqlserver en SQL Server Management Studio (SSMS). Sin embargo, puedes modificar los trabajos mediante procedimientos integrados. Además, los trabajos se pueden ver mediante el siguiente procedimiento almacenado:

Para iniciar un trabajo de limpieza, puedes usar el siguiente comando:

EXEC sys.sp_cdc_start_job @job_type = N'cleanup'

Para cambiar los parámetros del trabajo, puedes usar un comando similar al siguiente, por ejemplo:

EXEC sys.sp_cdc_change_job  @job_type = N'capture',
        @maxtrans = 20,
        @pollinginterval = NULL,
        @maxscans = NULL,
        @continuous = NULL

Para obtener más información sobre cómo iniciar y cambiar trabajos, consulta los siguientes vínculos:

Consulta también sys.sp_cdc_add_job.

Habilita la CDC para una tabla

Después de activar la CDC para una base de datos, cualquier usuario con acceso dbo (propietario de la base de datos) puede configurar el seguimiento de las tablas en la base de datos.

Para obtener información sobre los comandos y las opciones estándar de la CDC, consulta Habilita o inhabilita la captura de datos modificados.

Realiza un seguimiento de los cambios en una tabla

Para realizar un seguimiento de una tabla, usa el procedimiento almacenado sys.sp_cdc_enable_table.

Por ejemplo, podrías especificar un comando similar al siguiente:

EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @role_name = N'CDC'

Verifica si la CDC está habilitada en una tabla

Para verificar si la CDC está habilitada en una tabla, usa el procedimiento almacenado sys.sp_cdc_help_change_data_capture.

Por ejemplo, puedes especificar un comando similar al siguiente:

EXECUTE sys.sp_cdc_help_change_data_capture
  @source_schema = N'dbo',
  @source_name = N'customer'

Consulta cambios mediante una tabla de cambios de CDC

Para ver los cambios de la CDC realizados en una tabla, usa una consulta SELECT en la tabla que se crea automáticamente cuando la CDC se habilita en esa tabla.

El nombre de la tabla es el siguiente:

<schema>_<table_name>_CT

Por ejemplo, puedes especificar un comando similar al siguiente:

SELECT * FROM cdc.dbo_customer_CT

Habilita la CDC en una tabla con una instancia de captura especificada

Para realizar un seguimiento de una tabla con una “instancia de captura”, usa el procedimiento almacenado sys.sp_cdc_enable_table.

Por ejemplo, podrías especificar un comando similar al siguiente:

EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'customer',
    @role_name = N'CDC',
    @capture_instance = N'customer_cdc',
    @supports_net_changes = 1

Consulta todos los cambios dentro de una instancia de captura

Para ver los cambios de la CDC realizados en una tabla dentro de una “instancia de captura”, usa el procedimiento almacenado cdc.fn_cdc_get_all_changes_<capture_instance>.

Por ejemplo, podrías especificar una instrucción de SQL similar a la que se muestra a continuación:

DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn = sys.fn_cdc_get_min_lsn(N'customer_cdc')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_customer_cdc(@from_lsn, @to_lsn, N'all');

Inhabilita la CDC para una tabla

Para inhabilitar el seguimiento de los CDC en una tabla, usa el procedimiento almacenado sys.sp_cdc_disable_table. Especifica una instancia de captura para inhabilitarla. De manera alternativa, especifica una instancia de captura como 'all'.

Por ejemplo, puedes especificar un comando similar al siguiente para inhabilitar la CDC en la tabla:

EXEC sys.sp_cdc_disable_table
  @source_schema = N'dbo',
  @source_name = N'customer',
  @capture_instance = N'all'

Importa una base de datos habilitada para CDC

Cuando se importa una base de datos habilitada para CDC, Cloud SQL para SQL Server mantiene habilitada la marca KEEP_CDC y crea de forma automática trabajos de captura y limpieza con parámetros predeterminados.