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.