Change Data Capture und andere SQL Server-Funktionen

In diesem Thema wird beschrieben, wie die folgenden Funktionen mit Change Data Capture interagieren:

  • Änderungsnachverfolgung

  • Datenbankspiegelung

  • Transaktionsreplikation

  • Wiederherstellen oder Anfügen einer Datenbank, die für Change Data Capture aktiviert ist

Änderungsnachverfolgung

Change Data Capture und die Änderungsnachverfolgung können für dieselbe Datenbank aktiviert werden. Dabei sind keine besonderen Aspekte zu berücksichtigen. Weitere Informationen finden Sie unter Verwenden der Änderungsnachverfolgung (SQL Server).

Datenbankspiegelung

Eine Datenbank, die für Change Data Capture aktiviert ist, kann gespiegelt werden. Um sicherzustellen, dass Aufzeichnungen und Cleanups nach einem Failover automatisch durchgeführt werden, führen Sie folgende Schritte aus:

  1. Stellen Sie sicher, dass der SQL Server-Agent auf der neuen Prinzipalserverinstanz ausgeführt wird.

  2. Erstellen Sie den Aufzeichnungs- und Cleanupauftrag in der neuen Prinzipaldatenbank (der vorherigen Spiegeldatenbank). Verwenden Sie zum Erstellen der Aufträge die gespeicherte sp_cdc_add_job-Prozedur.

Um die aktuelle Konfiguration eines Cleanup- oder Aufzeichnungsauftrags anzuzeigen, verwenden Sie die gespeicherte sys.sp_cdc_help_jobs-Prozedur auf der neuen Prinzipalserverinstanz. Der Aufzeichnungsauftrag erhält für die jeweilige Datenbank den Namen cdc.database_name_capture und der Cleanupauftrag den Namen cdc.database_name_cleanup, wobei database_name dem Namen der Datenbank entspricht.

Um die Konfiguration eines Auftrags zu ändern, verwenden Sie die gespeicherte sys.sp_cdc_change_job-Prozedur.

Weitere Informationen zur Datenbankspiegelung finden Sie unter Datenbankspiegelung (SQL Server).

Transaktionsreplikation

Change Data Capture und Transaktionsreplikation können in einer Datenbank nebeneinander vorhanden sein, aber die Auffüllung der Änderungstabellen wird anders behandelt, wenn beide Funktionen aktiviert sind. Change Data Capture und die Transaktionsreplikation verwenden immer dieselbe Prozedur, nämlich sp_replcmds, um die Änderungen aus dem Transaktionsprotokoll auszulesen. Wenn Change Data Capture allein aktiviert ist, ruft ein SQL Server-Agentauftrag die Prozedur sp_replcmds auf. Wenn für eine Datenbank beide Funktionen aktiviert sind, ruft der Protokolllese-Agent die Prozedur sp_replcmds auf. Dieser Agent füllt sowohl die Änderungstabellen als auch die Tabellen der Verteilungsdatenbank auf. Weitere Informationen finden Sie unter Replikationsprotokolllese-Agent.

Angenommen, Change Data Capture ist für die AdventureWorks2012 -Datenbank aktiviert, und zwei Tabellen sind für Capture aktiviert. Um die Änderungstabellen aufzufüllen, ruft der Aufzeichnungsauftrag sp_replcmds auf. Die Datenbank wird für die Transaktionsreplikation aktiviert, und eine Veröffentlichung wird erstellt. Anschließend wird der Protokolllese-Agent für die Datenbank erstellt, und der Aufzeichnungsauftrag wird gelöscht. Der Protokolllese-Agent fährt fort, das Protokoll ab der letzten Protokollfolgenummer zu durchsuchen, für die ein Commit in die Änderungstabelle ausgeführt wurde. Auf diese Weise wird die Datenkonsistenz in den Änderungstabellen sichergestellt. Wenn die Transaktionsreplikation in dieser Datenbank deaktiviert wird, wird der Protokolllese-Agent entfernt und der Aufzeichnungsauftrag neu erstellt.

HinweisHinweis

Falls der Protokolllese-Agent sowohl für Change Data Capture als auch für die Transaktionsreplikation verwendet wird, werden die replizierten Änderungen zuerst in die Verteilungsdatenbank geschrieben. Anschließend werden aufgezeichnete Änderungen in die Änderungstabellen geschrieben. Der Commit wird für beide Vorgänge zusammen ausgeführt. Wenn für das Schreiben in die Verteilungsdatenbank eine Latenzzeit vorhanden ist, gilt diese Latenzzeit auch für den Zeitraum, nach dem die Änderungen in den Änderungstabellen angezeigt werden.

Die Option proc exec der Transaktionsreplikation ist nicht verfügbar, wenn Change Data Capture aktiviert ist.

Wiederherstellen oder Anfügen einer Datenbank, die für Change Data Capture aktiviert ist

SQL Server verwendet die folgende Logik, um zu ermitteln, ob Change Data Capture nach dem Wiederherstellen oder Anfügen einer Datenbank aktiviert bleibt:

  • Wenn eine Datenbank auf demselben Server mit demselben Datenbanknamen wiederhergestellt wird, bleibt Change Data Capture aktiviert.

  • Wenn eine Datenbank auf einem anderen Server wiederhergestellt wird, wird Change Data Capture standardmäßig deaktiviert und alle dazugehörigen Metadaten werden gelöscht.

    Um Change Data Capture beizubehalten, verwenden Sie beim Wiederherstellen der Datenbank die Option KEEP_CDC. Weitere Informationen zu dieser Option finden Sie unter RESTORE.

  • Wenn für eine Datenbank auf demselben Server oder einem anderen Server die Anfügung aufgehoben und dann wiederhergestellt wird, bleibt Change Data Capture aktiviert.

  • Wenn eine Datenbank mit der Option KEEP_CDC an eine andere Edition als die Enterprise Edition angefügt oder dafür wiederhergestellt wird, wird der Vorgang blockiert, weil Change Data Capture SQL Server Enterprise erfordert. Die Fehlermeldung 934 wird angezeigt:

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

Sie können sys.sp_cdc_disable_db verwenden, um Change Data Capture aus einer wiederhergestellten oder angefügten Datenbank zu entfernen.

Siehe auch

Konzepte

Verwalten und Überwachen von Change Data Capture (SQL Server)