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 registrar muchos tipos de cambios. Para obtener información sobre cómo habilitar e inhabilitar CDC, consulta la documentación de Microsoft.
Después de conectarte a una instancia, el sqlserver
usuario puede realizar muchas operaciones de CDC.
Consulte también Trabajar con datos de cambios.
Antes de empezar
Antes de implementar CDC en una instancia, consulta toda la información de esta página.
Confirmar la disponibilidad de la función
La CDC está disponible en las siguientes versiones de la base 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
Habilitar CDC e iniciar tareas de captura de CDC
Tu base de datos tiene los siguientes procedimientos almacenados para que los use el sqlserver
usuario:
msdb.dbo.gcloudsql_cdc_enable_db
msdb.dbo.gcloudsql_cdc_disable_db
Activar CDC
Para activar esta función en una base de datos, ejecuta el procedimiento almacenado necesario e introduce el nombre de la base de datos. Por ejemplo:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Desactivar 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'
Iniciar tareas de captura de CDC
Una vez habilitado el CDC, se crean trabajos para la captura y la limpieza. Los trabajos no son visibles para el usuario sqlserver
en SQL Server Management Studio (SSMS).
Sin embargo, puede modificar los trabajos mediante procedimientos almacenados integrados. Además, los trabajos se pueden ver mediante el siguiente procedimiento almacenado:
Para iniciar una tarea 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 tareas, consulta lo siguiente:
Consulta también sys.sp_cdc_add_job
.
Habilitar CDC en una tabla
Una vez que hayas activado CDC en una base de datos, cualquier usuario con acceso dbo (propietario de la base de datos) podrá configurar el seguimiento de las tablas de la base de datos.
Para obtener información sobre los comandos y las opciones estándar de CDC, consulta Habilitar e inhabilitar la captura de datos de cambios.
Registrar cambios en una tabla
Para monitorizar 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'
Comprobar si CDC está habilitado en una tabla
Para comprobar si CDC está habilitado 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'
Consultar cambios mediante una tabla de cambios de CDC
Para ver los cambios de CDC realizados en una tabla, usa una consulta SELECT
en la tabla que se crea automáticamente cuando se habilita CDC en esa tabla.
La tabla se llama de la siguiente manera:
<schema>_<table_name>_CT
Por ejemplo, puedes especificar un comando similar al siguiente:
SELECT * FROM cdc.dbo_customer_CT
Habilitar CDC en una tabla con una instancia de captura especificada
Para monitorizar 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
Consultar todos los cambios de una instancia de captura
Para ver los cambios de CDC realizados en una tabla de una "instancia de captura", usa el procedimiento almacenado cdc.fn_cdc_get_all_changes_<capture_instance>
.
Por ejemplo, puede especificar una instrucción 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');
Inhabilitar CDC en una tabla
Para inhabilitar el seguimiento de CDC en una tabla, usa el procedimiento almacenado sys.sp_cdc_disable_table
. Especifica una instancia de captura para inhabilitarla. También puedes especificar una instancia de captura como 'all'
.
Por ejemplo, puede especificar un comando similar al siguiente para inhabilitar CDC en la tabla:
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
Eliminar una base de datos con CDC habilitado
Si la función CDC está habilitada en una base de datos y intentas eliminarla, es posible que se produzcan errores. Si esto ocurre, inhabilita CDC en la base de datos y, a continuación, elimina la base de datos.
Por ejemplo, puedes especificar un comando similar al siguiente para inhabilitar y eliminar una base de datos:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Si no puedes eliminar 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 CDC en la base de datos y, a continuación, elimina la base de datos.
Importar una base de datos con CDC habilitada
Al importar una base de datos con CDC habilitado, Cloud SQL para SQL Server mantiene habilitada la marca KEEP_CDC y crea automáticamente tareas de captura y limpieza con parámetros predeterminados.