Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie Sie die Änderungsnachverfolgung verwalten. Außerdem wird beschrieben, wie Die Sicherheit konfiguriert und die Auswirkungen auf Speicher und Leistung beim Verwenden der Änderungsnachverfolgung bestimmt werden.
Verwalten der Änderungsnachverfolgung
In den folgenden Abschnitten werden Katalogansichten, Berechtigungen und Einstellungen aufgeführt, die für die Verwaltung der Änderungsnachverfolgung relevant sind.
Katalogansichten
Um zu ermitteln, welche Tabellen und Datenbanken die Änderungsnachverfolgung aktiviert haben, können Sie die folgenden Katalogansichten verwenden:
Außerdem listet die sys.internal_tables Katalogansicht die internen Tabellen auf, die erstellt werden, wenn die Änderungsnachverfolgung für eine Benutzertabelle aktiviert ist.
Sicherheit
Um mithilfe der Änderungsverfolgungsfunktionen auf Änderungsnachverfolgungsinformationen zuzugreifen, muss der Prinzipal über die folgenden Berechtigungen verfügen:
SELECT-Berechtigung für mindestens die Primärschlüsselspalten in der Änderungsnachverfolgungstabelle in der Tabelle, die abgefragt wird.
VIEW CHANGE TRACKING-Berechtigung für die Tabelle, für die Änderungen abgerufen werden. Die Berechtigung "VIEW CHANGE TRACKING" ist aus den folgenden Gründen erforderlich:
Änderungsnachverfolgungsdatensätze enthalten Informationen zu Zeilen, die gelöscht wurden, insbesondere die Primärschlüsselwerte der zeilen, die gelöscht wurden. Einem Benutzer könnten SELECT-Berechtigungen für eine nachverfolgte Tabelle erteilt worden sein, nachdem sensible Daten gelöscht wurden. In diesem Fall möchten Sie nicht, dass dieser Berechtigter durch die Änderungsverfolgung auf diese gelöschten Informationen zugreifen kann.
Informationen zur Änderungsnachverfolgung können Informationen darüber speichern, welche Spalten durch Aktualisierungsvorgänge geändert wurden. Ein Prinzipal konnte die Berechtigung für eine Spalte verweigert werden, die vertrauliche Informationen enthält. Da jedoch Informationen zur Änderungsnachverfolgung verfügbar sind, kann ein Prinzipal bestimmen, dass ein Spaltenwert aktualisiert wurde, der Prinzipal jedoch den Wert der Spalte nicht bestimmen kann.
Grundlegendes zur Änderungsnachverfolgung
Wenn die Änderungsnachverfolgung für eine Tabelle aktiviert ist, sind einige Verwaltungsvorgänge betroffen. In der folgenden Tabelle sind die Vorgänge und die Effekte aufgeführt, die Sie berücksichtigen sollten.
| Vorgang | Wenn die Änderungsnachverfolgung aktiviert ist |
|---|---|
| DROP-TABELLE | Alle Änderungsnachverfolgungsinformationen für die verworfene Tabelle werden entfernt. |
| ALTER TABLE DROP CONSTRAINT | Beim Versuch, die EINSCHRÄNKUNG PRIMÄRSCHLÜSSEL zu löschen, tritt ein Fehler auf. Die Änderungsnachverfolgung muss deaktiviert werden, bevor eine PRIMARY KEY-Einschränkung gelöscht werden kann. |
| VERÄNDERN TABELLE SPALTE LÖSCHEN | Wenn eine Spalte, die gelöscht wird, Teil des Primärschlüssels ist, ist das Ablegen der Spalte unabhängig von der Änderungsnachverfolgung nicht zulässig. Wenn die entfernte Spalte nicht Teil des Primärschlüssels ist, kann die Spalte erfolgreich entfernt werden. Die Auswirkung auf jede Anwendung, die diese Daten synchronisiert, sollte jedoch zuerst verstanden werden. Wenn die Nachverfolgung von Spaltenänderungen für die Tabelle aktiviert ist, wird die verworfene Spalte möglicherweise weiterhin als Teil der Änderungsnachverfolgungsinformationen zurückgegeben. Es liegt in der Verantwortung der Anwendung, die fallengelassene Spalte zu behandeln. |
| ÄNDERN SIE TABELLE SPALTE HINZUFÜGEN | Wenn der Änderungstabelle eine neue Spalte hinzugefügt wird, wird die Hinzufügung der Spalte nicht nachverfolgt. Nur die Aktualisierungen und Änderungen, die an der neuen Spalte vorgenommen werden, werden nachverfolgt. |
| ALTER TABLE ALTER COLUMN | Änderungen des Datentyps von Nicht-Primärschlüsselspalten werden nicht nachverfolgt. |
| ALTER TABLE SWITCH | Das Wechseln einer Partition schlägt fehl, wenn eine oder beide Tabellen die Änderungsnachverfolgung aktiviert haben. |
| DROP INDEX oder ALTER INDEX DISABLE | Der Index, der den Primärschlüssel erzwingt, kann nicht gelöscht oder deaktiviert werden. |
| Tabelle kürzen | Das Abschneiden einer Tabelle kann für eine Tabelle mit aktivierter Änderungsnachverfolgung ausgeführt werden. Die Zeilen, die vom Vorgang gelöscht werden, werden jedoch nicht nachverfolgt, und die mindestens gültige Version wird aktualisiert. Wenn eine Anwendung ihre Version überprüft, gibt die Überprüfung an, dass die Version zu alt ist und eine Erneute initialisierung erforderlich ist. Dies ist dasselbe, wie wenn die Änderungsnachverfolgung deaktiviert und dann für die Tabelle erneut aktiviert wird. |
Die Verwendung der Änderungsnachverfolgung fügt den DML-Vorgängen etwas zusätzlichen Aufwand hinzu, da die Änderungsnachverfolgungsinformationen als Teil des Vorgangs gespeichert werden.
Auswirkungen auf DML
Die Änderungsnachverfolgung wurde optimiert, um den Leistungsaufwand für DML-Vorgänge zu minimieren. Der inkrementelle Leistungsaufwand, der der Verwendung der Änderungsnachverfolgung in einer Tabelle zugeordnet ist, ähnelt dem Aufwand, der beim Erstellen eines Indexes für eine Tabelle entsteht und beibehalten werden muss.
Für jede Zeile, die durch einen DML-Vorgang geändert wird, wird der internen Änderungsnachverfolgungstabelle eine Zeile hinzugefügt. Die Auswirkung im Vergleich zum DML-Vorgang hängt von verschiedenen Faktoren ab, z. B. von folgenden:
Die Anzahl der Primärschlüsselspalten
Die Datenmenge, die in der Benutzertabellenzeile geändert wird
Die Anzahl der Vorgänge, die in einer Transaktion ausgeführt werden
Die Snapshotisolation wirkt sich bei Verwendung auch auf die Leistung für alle DML-Vorgänge aus, unabhängig davon, ob die Änderungsnachverfolgung aktiviert ist oder nicht.
Auswirkungen auf die Speicherung
Änderungsverfolgungsdaten werden in den folgenden Typen interner Tabellen gespeichert:
Interne Änderungstabelle
Es gibt eine interne Änderungstabelle für jede Benutzertabelle mit aktivierter Änderungsnachverfolgung.
Interne Transaktionstabelle
Es gibt eine interne Transaktionstabelle für die Datenbank.
Diese internen Tabellen wirken sich auf die Speicheranforderungen wie folgt aus:
Für jede Änderung an jeder Zeile in der Benutzertabelle wird der internen Änderungstabelle eine Zeile hinzugefügt. Diese Zeile weist einen kleinen festen Overhead und einen variablen Overhead auf, der der Größe der Primärschlüsselspalten entspricht. Die Zeile kann optionale Kontextinformationen enthalten, die von einer Anwendung festgelegt werden. Und wenn die Spaltennachverfolgung aktiviert ist, benötigt jede geänderte Spalte 4 Byte in der Nachverfolgungstabelle.
Für jede zugesicherte Transaktion wird einer internen Transaktionstabelle eine Zeile hinzugefügt.
Wie bei anderen internen Tabellen können Sie den Für die Änderungsnachverfolgungstabellen verwendeten Platz mithilfe der sp_spaceused gespeicherten Prozedur ermitteln. Die Namen der internen Tabellen können mithilfe der sys.internal_tables Katalogansicht abgerufen werden, wie im folgenden Beispiel gezeigt.
sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'
Siehe auch
Nachverfolgen von Datenänderungen (SQL Server)
ALTER TABLE (Transact-SQL)
Datenbankeigenschaften (ChangeTracking-Seite)
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)