Change Data Capture (CDC) aktivieren

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, können Fehler auftreten. Deaktivieren Sie in diesem Fall CDC für die Datenbank und löschen Sie sie dann.

Sie können beispielsweise 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, weil sie offene Verbindungen hat, verwenden Sie die folgende Abfrage, um diese Verbindungen aufzurufen:

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.