Habilitar 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 capturar muchos tipos de cambios. Si deseas obtener información para inhabilitar y habilitar la CDC, consulta la documentación de Microsoft.

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 2022 Standard
  • SQL Server 2022 Enterprise
  • SQL Server 2019 Standard
  • SQL Server 2019 Enterprise
  • SQL Server 2017 Standard
  • SQL Server 2017 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

A fin de desactivar esta función para 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 se habilita, se crean trabajos 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 almacenados integrados. Además, los trabajos se pueden ver a través del 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, puedes 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, puedes 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, puedes especificar una instrucción de SQL similar a la siguiente:

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 la CDC en una tabla, usa el procedimiento almacenado sys.sp_cdc_disable_table. Especifica una instancia de captura para inhabilitarla. Como 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'

Borra una base de datos habilitada para CDC

Si la CDC está habilitada para una base de datos y tratas de borrarla, es posible que veas errores. Si esto ocurre, inhabilita la CDC para la base de datos y, luego, bórrala.

Por ejemplo, puedes especificar un comando similar al siguiente para inhabilitar y borrar una base de datos:

EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
DROP DATABASE 'DATABASE_NAME'

Si no puedes borrar la base de datos porque tiene conexiones abiertas, usa la siguiente consulta para ver esas conexiones:

select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'

Cierra todas las conexiones abiertas. Inhabilita los CDC para la base de datos y, luego, bórrala.

Importa una base de datos con la CDC habilitada

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