Aktivieren und Deaktivieren der Änderungsnachverfolgung (SQL Server)

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 DATABASE aktiviert werden kann.

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

Sie können die Änderungsnachverfolgung in SQL Server Management Studio auch aktivieren, indem Sie das Dialogfeld Datenbankeigenschaften (Seite Änderungsnachverfolgung) verwenden.

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 Verwenden 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 TABLE aktiviert werden kann.

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

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

Wenn die TRACK_COLUMNS_UPDATED-Option auf ON festgelegt wird, speichert SQL Server Database Engine (Datenbankmodul) zusätzliche Informationen in der internen Änderungsnachverfolgungstabelle dazu, welche Spalten aktualisiert wurden. Die Spaltennachverfolgung kann eine Anwendung aktivieren, um nur jene Spalten zu synchronisieren, die aktualisiert wurden. Dadurch können Effizienz und Leistung verbessert werden. Da die Verwaltung der Spaltennachverfolgungsinformationen jedoch zusätzlichen Speicherplatz beansprucht, ist diese Option standardmäßig deaktiviert.

Deaktivieren der Änderungsnachverfolgung für Datenbanken oder Tabellen

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.

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 DATABASE deaktiviert werden kann.

ALTER DATABASE AdventureWorks2012
SET CHANGE_TRACKING = OFF

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

ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;

Siehe auch

Verweis

Datenbankeigenschaften (Seite Änderungsnachverfolgung)

ALTER DATABASE SET-Optionen (Transact-SQL)

sys.change_tracking_databases (Transact-SQL)

sys.change_tracking_tables (Transact-SQL)

Konzepte

Nachverfolgen von Datenänderungen (SQL Server)

Informationen zur Änderungsnachverfolgung (SQL Server)

Arbeiten mit Änderungsdaten (SQL Server)

Verwalten der Änderungsnachverfolgung (SQL Server)