Aktivieren und Deaktivieren der Änderungsnachverfolgung (SQL Server)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie die Änderungsnachverfolgung für Datenbanken und Tabellen aktivieren und deaktivieren können.

Aktivieren der Änderungsnachverfolgung für eine Datenbank

Bevor Sie die Änderungsnachverfolgung verwenden können, müssen Sie die Änderungsnachverfolgung auf Datenbankebene aktivieren. Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung mit ALTER DATABASEaktiviert werden kann.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = ON  
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  

Sie können die Änderungsnachverfolgung auch in SQL Server Management Studio aktivieren. Verwenden Sie hierzu das Dialogfeld Datenbankeigenschaften (Seite Änderungsnachverfolgung). Wenn eine Datenbank arbeitsspeicheroptimierte Tabellen enthält, können Sie die Änderungsnachverfolgung nicht mit SQL Server Management Studio aktivieren. Verwenden Sie zum Aktivieren T-SQL.

Bei der Aktivierung der Änderungsnachverfolgung können Sie die CHANGE_RETENTION-Option und die AUTO_CLEANUP-Option angeben. Die Werte können Sie nach der Aktivierung der Änderungsnachverfolgung jederzeit ändern.

Der Änderungsbeibehaltungswert gibt den Zeitraum an, für den Änderungsnachverfolgungsinformationen geführt werden. Änderungsnachverfolgungsinformationen, die älter sind als der angegebene Zeitraum, werden in regelmäßigen Abständen entfernt. Bei der Festlegung dieses Werts ist zu berücksichtigen, wie häufig Anwendungen mit den Tabellen in der Datenbank synchronisiert werden. Die angegebene Beibehaltungsdauer muss wenigstens so lange sein wie der maximale Zeitraum zwischen Synchronisierungen. Ruft eine Anwendung Änderungen in längeren Intervallen ab, werden möglicherweise falsche Ergebnisse zurückgegeben, da einige Änderungsinformationen wahrscheinlich entfernt wurden. Zur Vermeidung falscher Ergebnisse kann eine Anwendung die CHANGE_TRACKING_MIN_VALID_VERSION-Systemfunktion verwenden, um zu ermitteln, ob das Intervall zwischen den Synchronisierungen zu lang war.

Mit der AUTO_CLEANUP-Option können Sie den Cleanup-Task aktivieren oder deaktivieren, mit dem alte Nachverfolgungsinformationen entfernt werden. Dies kann hilfreich sein, wenn ein temporäres Problem vorliegt, das eine Synchronisierung von Anwendungen verhindert, und der Prozess zum Entfernen von Änderungsnachverfolgungsinformationen, die älter sind als die Beibehaltungsdauer, angehalten werden muss, bis das Problem behoben wurde.

Beachten Sie generell für Datenbanken, für die die Änderungsnachverfolgung verwendet wird, Folgendes:

  • Zur Verwendung der Änderungsnachverfolgung muss für den Datenbankkompatibilitätsgrad 90 oder höher festgelegt werden. Wenn eine Datenbank einen Kompatibilitätsgrad von weniger als 90 aufweist, können Sie die Änderungsnachverfolgung konfigurieren. Allerdings gibt dann die CHANGETABLE-Funktion, die verwendet wird, um Änderungsnachverfolgungsinformationen abzurufen, einen Fehler zurück.

  • Die Momentaufnahmeisolation ist die einfachste Möglichkeit, die Konsistenz aller Änderungsnachverfolgungsinformationen sicherzustellen. Aus diesem Grund sollte für die Momentaufnahmeisolation für die Datenbank auf jeden Fall ON festgelegt werden. Weitere Informationen finden Sie unter Arbeiten mit der Änderungsnachverfolgung (SQL Server).

Aktivieren der Änderungsnachverfolgung für eine Tabelle

Die Änderungsnachverfolgung muss für jede nachzuverfolgende Tabelle aktiviert werden. Nach der Aktivierung der Änderungsnachverfolgung werden für alle Zeilen in der Tabelle, die von einem DML-Vorgang betroffen sind, Änderungsnachverfolgungsinformationen beibehalten.

Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung für eine Tabelle mit ALTER TABLEaktiviert werden kann.

ALTER TABLE Person.Contact  
ENABLE CHANGE_TRACKING  
WITH (TRACK_COLUMNS_UPDATED = ON)  

Sie können die Änderungsnachverfolgung für eine Tabelle auch in SQL Server Management Studio aktivieren. Verwenden Sie hierzu das Dialogfeld Datenbankeigenschaften (Seite Änderungsnachverfolgung).

Wenn die Option TRACK_COLUMNS_UPDATED auf EIN festgelegt ist, speichert das SQL Server-Datenbankmodul zusätzliche Informationen darüber, welche Spalten auf die interne Änderungsnachverfolgungstabelle aktualisiert wurden. Mit Spaltennachverfolgung kann eine Anwendung aktiviert werden, um nur die aktualisierten Spalten zu synchronisieren. Hiermit können Effizienz und Leistung gesteigert werden. Da die Verwaltung der Spaltennachverfolgungsinformationen jedoch zusätzlichen Speicherplatz beansprucht, ist diese Option standardmäßig deaktiviert.

Deaktivieren der Änderungsnachverfolgung für eine Tabelle oder Datenbank

Die Änderungsnachverfolgung muss zunächst für alle Tabellen mit Änderungsnachverfolgung deaktiviert werden, bevor die Änderungsnachverfolgung auch für die Datenbank deaktiviert werden kann. Ermitteln Sie für eine Datenbank die Tabellen mit aktivierter Änderungsnachverfolgung mit der sys.change_tracking_tables -Katalogsicht.

Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung für eine Tabelle mit ALTER TABLEdeaktiviert werden kann.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Wenn für keine Tabelle einer Datenbank Änderungen nachverfolgt werden, können Sie die Änderungsnachverfolgung für die Datenbank deaktivieren. Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung für eine Datenbank mit ALTER DATABASEdeaktiviert werden kann.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = OFF  

Weitere Informationen

Datenbankeigenschaften (Seite Änderungsnachverfolgung)
ALTER DATABASE SET-Optionen (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
Nachverfolgen von Datenänderungen (SQL Server)
Informationen zur Änderungsnachverfolgung (SQL Server)
Arbeiten mit Änderungsdaten (SQL Server)
Verwalten der Änderungsnachverfolgung (SQL Server)