Esta página 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 sus instancias.
CDC permite capturar diversos tipos de cambios. Para obtener información sobre cómo habilitar y deshabilitar CDC, consulte la documentación de Microsoft .
Después de conectarse a una instancia, el usuario sqlserver
puede realizar muchas operaciones CDC .
Consulte también Trabajar con datos modificados .
Antes de empezar
Antes de implementar CDC en una instancia, revise toda la información en esta página.
Confirmar la disponibilidad de la función
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
Habilitación de CDC e inicio de trabajos de captura de CDC
Su base de datos tiene los siguientes procedimientos almacenados, para uso del usuario sqlserver
:
-
msdb.dbo.gcloudsql_cdc_enable_db
-
msdb.dbo.gcloudsql_cdc_disable_db
Activar CDC
Para activar esta función en una base de datos, ejecute el procedimiento almacenado necesario e introduzca el nombre de la base de datos. Por ejemplo:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Desactivar el CDC
Para desactivar esta función para una base de datos, ejecute un comando como el siguiente:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
Iniciar trabajos de captura de CDC
Tras habilitar CDC, se crean trabajos de captura y limpieza. Estos trabajos son invisibles para el usuario sqlserver
en SQL Server Management Studio (SSMS). Sin embargo, puede modificarlos mediante procedimientos almacenados integrados. Además, los trabajos se pueden visualizar mediante el siguiente procedimiento almacenado:
Para iniciar un trabajo de limpieza, puede utilizar el siguiente comando:
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
Para cambiar los parámetros del trabajo, puede utilizar 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 de trabajo, consulte lo siguiente:
Consulte también sys.sp_cdc_add_job
.
Habilitación de CDC para una tabla
Después de activar 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 opciones estándar de CDC, consulte Habilitar y deshabilitar la captura de datos modificados .
Seguimiento de cambios en una tabla
Para realizar el seguimiento de una tabla, utilice el procedimiento almacenado sys.sp_cdc_enable_table
.
Por ejemplo, podría especificar un comando similar al siguiente:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC'
Comprueba si el CDC está habilitado en una tabla
Para verificar si CDC está habilitado en una tabla, utilice el procedimiento almacenado sys.sp_cdc_help_change_data_capture
.
Por ejemplo, podría especificar un comando similar al siguiente:
EXECUTE sys.sp_cdc_help_change_data_capture
@source_schema = N'dbo',
@source_name = N'customer'
Consultar cambios a través de una tabla de cambios de CDC
Para ver los cambios de CDC realizados en una tabla, utilice una consulta SELECT
en la tabla que se crea automáticamente cuando se habilita CDC en esa tabla.
La tabla se denomina de la siguiente manera:
<schema>_<table_name>_CT
Por ejemplo, podría especificar un comando similar al siguiente:
SELECT * FROM cdc.dbo_customer_CT
Habilitar CDC en una tabla con una instancia de captura especificada
Para rastrear una tabla con una "instancia de captura", utilice el procedimiento almacenado sys.sp_cdc_enable_table
.
Por ejemplo, podría 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 dentro de una instancia de captura
Para ver los cambios de CDC realizados en una tabla dentro de una "instancia de captura", utilice el procedimiento almacenado cdc.fn_cdc_get_all_changes_<capture_instance>
.
Por ejemplo, podría especificar una declaració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');
Deshabilitar CDC para una tabla
Para deshabilitar el seguimiento de CDC en una tabla, utilice el procedimiento almacenado sys.sp_cdc_disable_table
. Especifique una instancia de captura para deshabilitarlo. Como alternativa, especifique una instancia de captura como 'all'
.
Por ejemplo, podría especificar un comando similar al siguiente para deshabilitar CDC para 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 habilitada para CDC
Si CDC está habilitado para una base de datos e intenta eliminarla, podría experimentar errores. En ese caso, deshabilítelo y elimínelo.
Por ejemplo, puede especificar un comando similar al siguiente para deshabilitar y eliminar una base de datos:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Si no puede eliminar la base de datos porque tiene conexiones abiertas, utilice la siguiente consulta para ver esas conexiones:
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
Cierre todas las conexiones abiertas. Desactive CDC para la base de datos y, a continuación, elimínela.
Importación de una base de datos habilitada para CDC
Al importar una base de datos habilitada para CDC, Cloud SQL para SQL Server mantiene habilitada la marca KEEP_CDC y crea automáticamente trabajos de captura y limpieza con parámetros predeterminados.