Auf dieser Seite wird beschrieben, wie Sie Change Data Capture (CDC) in Cloud SQL for SQL Server aktivieren. Dieses Feature ist für die Datenbanken Ihrer Instanzen verfügbar.
Mit CDC lassen sich viele verschiedene Änderungsarten erfassen. Informationen zum Aktivieren und Deaktivieren von CDC finden Sie in der Microsoft-Dokumentation.
Nach dem Herstellen einer Verbindung zu einer Instanz kann der sqlserver
-Nutzer viele CDC-Vorgänge ausführen.
Siehe auch Mit Change Data arbeiten.
Hinweis
Überprüfen Sie vor dem Implementieren von CDC für eine Instanz alle Informationen auf dieser Seite.
Verfügbarkeit des Features prüfen
CDC ist für die folgenden Cloud SQL for SQL Server-Datenbankversionen verfügbar:
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
CDC aktivieren und CDC-Erfassungsjobs starten
In Ihrer Datenbank sind die folgenden gespeicherten Prozeduren gespeichert, die vom sqlserver
-Nutzer verwendet werden können:
msdb.dbo.gcloudsql_cdc_enable_db
msdb.dbo.gcloudsql_cdc_disable_db
CDC aktivieren
Führen Sie die erforderliche gespeicherte Prozedur aus und übergeben Sie den Datenbanknamen, um dieses Feature für eine Datenbank zu aktivieren. Beispiel:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
CDC deaktivieren
Sie können dieses Features für eine Datenbank deaktivieren. Führen Sie dazu einen Befehl wie den folgenden aus:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
CDC-Erfassungsjobs starten
Nachdem CDC aktiviert wurde, werden Jobs zum Erfassen und Bereinigen erstellt. Die Jobs sind für den sqlserver
-Nutzer in SQL Server Management Studio (SSMS) nicht sichtbar.
Sie können die Jobs jedoch mit integrierten gespeicherten Prozeduren ändern. Außerdem sind die Jobs über das folgende gespeicherte Verfahren sichtbar:
Zum Starten eines Bereinigungsjobs können Sie den folgenden Befehl verwenden:
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
Zum Ändern der Jobparameter können Sie einen ähnlichen Befehl wie den folgenden verwenden:
EXEC sys.sp_cdc_change_job @job_type = N'capture',
@maxtrans = 20,
@pollinginterval = NULL,
@maxscans = NULL,
@continuous = NULL
Weitere Informationen zum Starten und Ändern von Jobs finden Sie unter:
Siehe auch sys.sp_cdc_add_job
.
CDC für eine Tabelle aktivieren
Nachdem Sie CDC für eine Datenbank aktiviert haben, kann jeder Nutzer mit Datenbankinhaber-Zugriff (dbo) das Tracking für Tabellen in der Datenbank einrichten.
Informationen zu den Standardbefehlen und -optionen von CDC finden Sie unter Änderungsdatenerfassung aktivieren und deaktivieren.
Änderungen in einer Tabelle verfolgen
Verwenden Sie zum Verfolgen der Änderungen einer Tabelle das gespeicherte Verfahren sys.sp_cdc_enable_table
.
Beispielsweise könnten Sie einen Befehl ähnlich dem folgenden angeben:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC'
Prüfen, ob CDC für eine Tabelle aktiviert wurde
Mit der gespeicherten Prozedur sys.sp_cdc_help_change_data_capture
können Sie prüfen, ob CDC für eine Tabelle aktiviert ist.
Beispielsweise könnten Sie einen Befehl ähnlich dem folgenden angeben:
EXECUTE sys.sp_cdc_help_change_data_capture
@source_schema = N'dbo',
@source_name = N'customer'
Änderungen über eine CDC-Änderungstabelle abfragen
Zum Aufrufen von CDC-Änderungen für eine Tabelle verwenden Sie die Abfrage SELECT
für die Tabelle, die automatisch erstellt wird, wenn CDC für diese Tabelle aktiviert wird.
Die Tabelle hat folgenden Namen:
<schema>_<table_name>_CT
Beispielsweise könnten Sie einen Befehl ähnlich dem folgenden angeben:
SELECT * FROM cdc.dbo_customer_CT
CDC für eine Tabelle mit angegebener Erfassungsinstanz aktivieren
Verwenden Sie die gespeicherte Prozedur sys.sp_cdc_enable_table
, um die Änderungen einer Tabelle mit einer "Erfassungs-Instanz" zu verfolgen.
Beispielsweise könnten Sie einen Befehl ähnlich dem folgenden angeben:
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
Alle Änderungen innerhalb einer Erfassungsinstanz abfragen
Verwenden Sie das gespeicherte Verfahren cdc.fn_cdc_get_all_changes_<capture_instance>
, um CDC-Änderungen an einer Tabelle innerhalb einer "Erfassungs-Instanz" anzusehen.
Beispielsweise können Sie eine SQL-Anweisung wie die folgende angeben:
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');
CDC für eine Tabelle deaktivieren
Verwenden Sie die gespeicherte Prozedur sys.sp_cdc_disable_table
, um das CDC-Tracking für eine Tabelle zu deaktivieren. Geben Sie eine Erfassungsinstanz an, um sie zu deaktivieren. Alternativ können Sie eine Erfassungsinstanz als 'all'
angeben.
Beispielsweise können Sie einen Befehl wie den folgenden angeben, um CDC für die Tabelle zu deaktivieren:
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
CDC-fähige Datenbank löschen
Wenn CDC für eine Datenbank aktiviert ist und Sie versuchen, sie zu löschen, kann es zu Fehlern kommen. Deaktivieren Sie in diesem Fall CDC für die Datenbank und löschen Sie sie dann.
Beispielsweise können Sie einen Befehl wie den folgenden angeben, um eine Datenbank zu deaktivieren und zu löschen:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
Wenn Sie die Datenbank nicht löschen können, da sie offene Verbindungen hat, können Sie diese Verbindungen mit der folgenden Abfrage aufrufen:
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
Schließen Sie alle offenen Verbindungen. Deaktivieren Sie CDC für die Datenbank und löschen Sie sie dann.
CDC-fähige Datenbank importieren
Beim Importieren einer CDC-aktivierten Datenbank behält Cloud SQL for SQL Server das Flag KEEP_CDC aktiviert und erstellt automatisch Erfassungs- und Bereinigungsjobs mit Standardparametern.