In questa pagina viene descritto come attivare Change Data Capture (CDC) in in Cloud SQL per SQL Server. Questa funzionalità è disponibile per i database delle tue istanze.
La tecnologia CDC consente di acquisire molti tipi di modifiche. Per informazioni su come attivare e disattivare la funzionalità CDC, consulta la documentazione di Microsoft.
Dopo esserti connesso a un
l'istanza sqlserver
utente può eseguire molte
Operazioni CDC.
Vedi anche Utilizza i dati di modifica.
Prima di iniziare
Prima di implementare la copia dei dati a livello di blocco in un'istanza, esamina tutte le informazioni riportate in questa pagina.
Verificare la disponibilità delle funzionalità
La tecnologia 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 della CDC e avvio dei job di acquisizione CDC
Il tuo database ha le seguenti stored procedure, per l'utilizzo da parte di sqlserver
utente:
msdb.dbo.gcloudsql_cdc_enable_db
msdb.dbo.gcloudsql_cdc_disable_db
Attiva CDC
Per attivare questa funzionalità per un database, esegui la stored procedure necessaria e passiamo il nome del database. Ad esempio:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
Disattivare il CDC
Per disattivare questa funzionalità per un database, esegui un comando come il seguente:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
Avvia job di acquisizione CDC
Una volta abilitata la 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 procedure memorizzate incorporate. 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 ulteriori informazioni su come avviare e modificare i job, consulta quanto segue:
Vedi anche sys.sp_cdc_add_job
.
Attivazione della CDC per una tabella
Dopo aver attivato la CDC per un database, qualsiasi utente con dbo (proprietario del database) può impostare il monitoraggio delle tabelle nel database.
Per informazioni sui comandi e sulle opzioni CDC standard, vedi Attiva e disattiva Change Data Capture.
Monitorare le 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'
Verificare se la CDC è attivata in una tabella
Per verificare se la CDC è abilitata su una tabella, utilizza il
sys.sp_cdc_help_change_data_capture
stored procedure.
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'
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 la funzionalità CDC è attivata nella tabella.
Il nome della tabella è il seguente:
<schema>_<table_name>_CT
Ad esempio, puoi specificare un comando simile al seguente:
SELECT * FROM cdc.dbo_customer_CT
Abilita CDC su una tabella con un'istanza di acquisizione specificata
Per monitorare una tabella con un'"istanza di acquisizione", utilizza la sys.sp_cdc_enable_table
stored procedure.
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
cdc.fn_cdc_get_all_changes_<capture_instance>
stored procedure.
Ad esempio, potresti 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');
Disabilitazione della CDC per una tabella
Per disattivare il monitoraggio CDC per una tabella, utilizza la procedura memorizzata sys.sp_cdc_disable_table
. Specifica un'istanza di acquisizione per disattivarla. In alternativa, specifica
acquisisci l'istanza come 'all'
.
Ad esempio, puoi specificare un comando simile al seguente per disattivare la 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 CDC è abilitata per un database e provi a eliminarlo, potresti riscontrare errori. In questo caso, disabilita la tecnologia CDC per il database ed 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 puoi eliminare il database perché ha connessioni aperte, utilizza la seguente query per vedere queste connessioni:
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 CDC
Durante l'importazione di un database abilitato CDC, Cloud SQL per SQL Server mantiene le KEEP_CDC abilitato e crea automaticamente job di acquisizione e pulizia con parametri predefiniti.