Aktivieren und Deaktivieren der Änderungsnachverfolgung (SQL Server)Enable and Disable Change Tracking (SQL Server)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In diesem Thema wird beschrieben, wie Sie die Änderungsnachverfolgung für Datenbanken und Tabellen aktivieren und deaktivieren können.This topic describes how to enable and disable change tracking for a database and a table.

Aktivieren der Änderungsnachverfolgung für eine DatenbankEnable Change Tracking for a Database

Bevor Sie die Änderungsnachverfolgung verwenden können, müssen Sie die Änderungsnachverfolgung auf Datenbankebene aktivieren.Before you can use change tracking, you must enable change tracking at the database level. Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung mit ALTER DATABASEaktiviert werden kann.The following example shows how to enable change tracking by using ALTER DATABASE.

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

Sie können die Änderungsnachverfolgung auch in SQL Server Management StudioSQL Server Management Studio aktivieren. Verwenden Sie hierzu das Dialogfeld Datenbankeigenschaften (Seite Änderungsnachverfolgung) .You can also enable change tracking in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

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.You can specify the CHANGE_RETENTION and AUTO_CLEANUP options when you enable change tracking, and you can change the values at any time after change tracking is enabled.

Der Änderungsbeibehaltungswert gibt den Zeitraum an, für den Änderungsnachverfolgungsinformationen geführt werden.The change retention value specifies the time period for which change tracking information is kept. Änderungsnachverfolgungsinformationen, die älter sind als der angegebene Zeitraum, werden in regelmäßigen Abständen entfernt.Change tracking information that is older than this time period is removed periodically. Bei der Festlegung dieses Werts ist zu berücksichtigen, wie häufig Anwendungen mit den Tabellen in der Datenbank synchronisiert werden.When you are setting this value, you should consider how often applications will synchronize with the tables in the database. Die angegebene Beibehaltungsdauer muss wenigstens so lange sein wie der maximale Zeitraum zwischen Synchronisierungen.The specified retention period must be at least as long as the maximum time period between synchronizations. Ruft eine Anwendung Änderungen in längeren Intervallen ab, werden möglicherweise falsche Ergebnisse zurückgegeben, da einige Änderungsinformationen wahrscheinlich entfernt wurden.If an application obtains changes at longer intervals, the results that are returned might be incorrect because some of the change information has probably been removed. 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.To avoid obtaining incorrect results, an application can use the CHANGE_TRACKING_MIN_VALID_VERSION system function to determine whether the interval between synchronizations has been too long.

Mit der AUTO_CLEANUP-Option können Sie den Cleanup-Task aktivieren oder deaktivieren, mit dem alte Nachverfolgungsinformationen entfernt werden.You can use the AUTO_CLEANUP option to enable or disable the cleanup task that removes old change tracking information. 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.This can be useful when there is a temporary problem that prevents applications from synchronizing and the process for removing change tracking information older than the retention period must be paused until the problem is resolved.

Beachten Sie generell für Datenbanken, für die die Änderungsnachverfolgung verwendet wird, Folgendes:For any database that uses change tracking, be aware of the following:

  • Zur Verwendung der Änderungsnachverfolgung muss für den Datenbankkompatibilitätsgrad 90 oder höher festgelegt werden.To use change tracking, the database compatibility level must be set to 90 or greater. Wenn eine Datenbank einen Kompatibilitätsgrad von weniger als 90 aufweist, können Sie die Änderungsnachverfolgung konfigurieren.If a database has a compatibility level of less than 90, you can configure change tracking. Allerdings gibt dann die CHANGETABLE-Funktion, die verwendet wird, um Änderungsnachverfolgungsinformationen abzurufen, einen Fehler zurück.However, the CHANGETABLE function, which is used to obtain change tracking information, will return an error.

  • Die Momentaufnahmeisolation ist die einfachste Möglichkeit, die Konsistenz aller Änderungsnachverfolgungsinformationen sicherzustellen.Using snapshot isolation is the easiest way for you to help ensure that all change tracking information is consistent. Aus diesem Grund sollte für die Momentaufnahmeisolation für die Datenbank auf jeden Fall ON festgelegt werden.For this reason, we strongly recommend that snapshot isolation be set to ON for the database. Weitere Informationen finden Sie unter Verwenden der Änderungsnachverfolgung (SQL Server).For more information, see Work with Change Tracking (SQL Server).

Aktivieren der Änderungsnachverfolgung für eine TabelleEnable Change Tracking for a Table

Die Änderungsnachverfolgung muss für jede nachzuverfolgende Tabelle aktiviert werden.Change tracking must be enabled for each table that you want tracked. Nach der Aktivierung der Änderungsnachverfolgung werden für alle Zeilen in der Tabelle, die von einem DML-Vorgang betroffen sind, Änderungsnachverfolgungsinformationen beibehalten.When change tracking is enabled, change tracking information is maintained for all rows in the table that are affected by a DML operation.

Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung für eine Tabelle mit ALTER TABLEaktiviert werden kann.The following example shows how to enable change tracking for a table by using ALTER TABLE.

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 StudioSQL Server Management Studio aktivieren. Verwenden Sie hierzu das Dialogfeld Datenbankeigenschaften (Seite Änderungsnachverfolgung) .You can also enable change tracking for a table in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

Ist für die TRACK_COLUMNS_UPDATED-Option ON festgelegt, speichert SQL Server-DatenbankmodulSQL Server Database Engine in der internen Änderungsnachverfolgungstabelle zusätzliche Informationen dazu, welche Spalten aktualisiert wurden.When the TRACK_COLUMNS_UPDATED option is set to ON, the SQL Server-DatenbankmodulSQL Server Database Engine stores extra information about which columns were updated to the internal change tracking table. Mit Spaltennachverfolgung kann eine Anwendung aktiviert werden, um nur die aktualisierten Spalten zu synchronisieren.Column tracking can enable an application to synchronize only those columns that were updated. Hiermit können Effizienz und Leistung gesteigert werden.This can improve efficiency and performance. Da die Verwaltung der Spaltennachverfolgungsinformationen jedoch zusätzlichen Speicherplatz beansprucht, ist diese Option standardmäßig deaktiviert.However, because maintaining column tracking information adds some extra storage overhead, this option is set to OFF by default.

Deaktivieren der Änderungsnachverfolgung für Datenbanken oder TabellenDisable Change Tracking for a Database or Table

Die Änderungsnachverfolgung muss zunächst für alle Tabellen mit Änderungsnachverfolgung deaktiviert werden, bevor die Änderungsnachverfolgung auch für die Datenbank deaktiviert werden kann.Change tracking must first be disabled for all change-tracked tables before change tracking can be set to OFF for the database. Ermitteln Sie für eine Datenbank die Tabellen mit aktivierter Änderungsnachverfolgung mit der sys.change_tracking_tables -Katalogsicht.To determine the tables that have change tracking enabled for a database, use the sys.change_tracking_tables catalog view.

Wenn für keine Tabelle einer Datenbank Änderungen nachverfolgt werden, können Sie die Änderungsnachverfolgung für die Datenbank deaktivieren.When no tables in a database track changes, you can disable change tracking for the database. Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung für eine Datenbank mit ALTER DATABASEdeaktiviert werden kann.The following example shows how to disable change tracking for a database by using ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = OFF  

Im folgenden Beispiel wird gezeigt, wie die Änderungsnachverfolgung für eine Tabelle mit ALTER TABLEdeaktiviert werden kann.The following example shows how to disable change tracking for a table by using ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Siehe auchSee Also

Datenbankeigenschaften (Seite Änderungsnachverfolgung) Database Properties (ChangeTracking Page)
ALTER DATABASE SET-Optionen (Transact-SQL) ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases (Transact-SQL) sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL) sys.change_tracking_tables (Transact-SQL)
Nachverfolgen von Datenänderungen (SQL Server) Track Data Changes (SQL Server)
Informationen zur Änderungsnachverfolgung (SQL Server) About Change Tracking (SQL Server)
Arbeiten mit Änderungsdaten (SQL Server) Work with Change Data (SQL Server)
Verwalten der Änderungsnachverfolgung (SQL Server) Manage Change Tracking (SQL Server)