Questa pagina descrive come abilitare Change Data Capture (CDC) in Cloud SQL per SQL Server. Questa funzionalità è disponibile per i database delle tue istanze.
CDC ti consente di acquisire molti tipi di modifiche. Per informazioni sull'abilitazione e la disabilitazione di CDC, consulta la documentazione di Microsoft.
Dopo aver eseguito la connessione a un'istanza, l'utente sqlserver può eseguire molte operazioni CDC.
Consulta anche Utilizza i dati delle modifiche.
Prima di iniziare
Prima di implementare il CDC su un'istanza, esamina tutte le informazioni riportate in questa pagina.
Verifica la disponibilità delle funzionalità
CDC è disponibile per le seguenti versioni del database Cloud SQL per 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
Abilitazione di CDC e avvio dei job di acquisizione CDC
Il tuo database contiene le seguenti stored procedure, che possono essere utilizzate dall'utente sqlserver:
msdb.dbo.gcloudsql_cdc_enable_dbmsdb.dbo.gcloudsql_cdc_disable_db
Attiva CDC
Per attivare questa funzionalità per un database, esegui la stored procedure necessaria e passa il nome del database. Ad esempio:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Disattiva CDC
Per disattivare questa funzionalità per un database, esegui un comando come il seguente:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
Avvia i job di acquisizione CDC
Dopo l'attivazione di CDC, vengono creati job per l'acquisizione e la pulizia. I job sono invisibili all'utente sqlserver in SQL Server Management Studio (SSMS).
Tuttavia, puoi modificare i job utilizzando le stored procedure integrate. Inoltre, i job sono visualizzabili tramite la seguente stored procedure:
Per avviare un job di pulizia, puoi utilizzare il seguente comando:
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
Per modificare i parametri del job, puoi utilizzare un comando simile al seguente, ad esempio:
EXEC sys.sp_cdc_change_job @job_type = N'capture',
@maxtrans = 20,
@pollinginterval = NULL,
@maxscans = NULL,
@continuous = NULL
Per saperne di più sull'avvio e sulla modifica dei job, consulta quanto segue:
Consulta anche sys.sp_cdc_add_job.
Abilitazione di CDC per una tabella
Dopo aver attivato CDC per un database, qualsiasi utente con accesso dbo (proprietario del database) può configurare il monitoraggio per le tabelle nel database.
Per informazioni sui comandi e sulle opzioni CDC standard, consulta Abilita e disabilita Change Data Capture.
Tieni traccia delle modifiche in una tabella
Per monitorare una tabella, utilizza la stored procedure sys.sp_cdc_enable_table.
Ad esempio, puoi specificare un comando simile al seguente:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC'
Controlla se CDC è abilitato in una tabella
Per verificare se CDC è abilitato su una tabella, utilizza la stored procedure sys.sp_cdc_help_change_data_capture.
Ad esempio, puoi specificare un comando simile al seguente:
EXECUTE sys.sp_cdc_help_change_data_capture
@source_schema = N'dbo',
@source_name = N'customer'
Eseguire query sulle modifiche tramite una tabella delle modifiche CDC
Per visualizzare le modifiche CDC apportate a una tabella, utilizza una query SELECT sulla tabella che viene creata automaticamente quando CDC viene abilitato sulla tabella.
La tabella è denominata come segue:
<schema>_<table_name>_CT
Ad esempio, puoi specificare un comando simile al seguente:
SELECT * FROM cdc.dbo_customer_CT
Abilita CDC in una tabella con un'istanza di acquisizione specificata
Per monitorare una tabella con un'"istanza di acquisizione", utilizza la stored procedure sys.sp_cdc_enable_table.
Ad esempio, puoi specificare un comando simile al seguente:
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
Esegui query su tutte le modifiche all'interno di un'istanza di acquisizione
Per visualizzare le modifiche CDC apportate a una tabella all'interno di un'"istanza di acquisizione", utilizza la stored procedure cdc.fn_cdc_get_all_changes_<capture_instance>.
Ad esempio, puoi specificare un'istruzione SQL simile alla seguente:
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');
Disattivazione di CDC per una tabella
Per disattivare il monitoraggio CDC per una tabella, utilizza la stored procedure sys.sp_cdc_disable_table. Specifica un'istanza di acquisizione per disattivarla. In alternativa, specifica un'istanza di acquisizione come 'all'.
Ad esempio, puoi specificare un comando simile al seguente per disattivare CDC per la tabella:
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
Eliminazione di un database abilitato per CDC
Se la tecnologia CDC è abilitata per un database e provi a eliminarlo, potresti riscontrare errori. In questo caso, disabilita CDC per il database, quindi eliminalo.
Ad esempio, puoi specificare un comando simile al seguente per disattivare ed eliminare un database:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Se non riesci a eliminare il database perché ha connessioni aperte, utilizza la seguente query per visualizzarle:
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
Chiudi tutte le connessioni aperte. Disabilita la tecnologia CDC per il database, quindi elimina il database.
Importazione di un database abilitato per CDC
Quando importi un database abilitato per CDC, Cloud SQL per SQL Server mantiene abilitato il flag KEEP_CDC e crea automaticamente job di acquisizione e pulizia con parametri predefiniti.