Systemkonsistenzprüfungen von temporalen Tabellen

Gilt für: SQL Server 2016 (13.x) und spätere Versionen Azure SQL-DatenbankAzure SQL Managed InstanceSQL database in Microsoft Fabric

Bei temporalen Tabellen führt das System mehrere Konsistenzprüfungen durch. Diese Überprüfungen stellen sicher, dass das Schema zeitlichen Anforderungen entspricht und die Daten konsistent und konsistent bleiben. Die Aussage DBCC CHECKCONSTRAINTS bietet außerdem zeitliche Überprüfungen.

Systemkonsistenzprüfungen

Bevor SYSTEM_VERSIONING auf ON festgelegt wird, wird eine Reihe von Überprüfungen für die Verlaufstabelle und die aktuelle Tabelle ausgeführt. Diese Überprüfungen gliedern sich in Schemaprüfungen und Datenprüfungen (wenn die Verlaufstabelle nicht leer ist). Das System führt außerdem eine Laufzeit-Konsistenzprüfung durch.

Schemaprüfung

Wenn Sie eine Tabelle erstellen oder verändern, um eine temporale Tabelle zu werden, überprüft das System, ob diese Anforderungen erfüllt sind:

  1. Die Namen und Anzahl der Spalten sind sowohl in der aktuellen Tabelle als auch in der Verlaufstabelle gleich.

  2. Die Datentypen stimmen für jede Spalte zwischen der aktuellen Tabelle und der Verlaufstabelle überein.

  3. Die Zeitraumspalten sind auf NOT NULL festgelegt.

  4. Die aktuelle Tabelle besitzt eine Primärschlüsseleinschränkung, während die Verlaufstabelle keine Primärschlüsseleinschränkung aufweist.

  5. Es wurden keine IDENTITY-Spalten in der Verlaufstabelle definiert.

  6. Es wurden keine Trigger in der Verlaufstabelle definiert.

  7. Es wurden keine Fremdschlüssel in der Verlaufstabelle definiert.

  8. Für die Historytabelle sind keine Tabellen- oder Spalteneinschränkungen definiert. Jedoch sind Standardwerte für Spalten in der Verlaufstabelle zulässig.

  9. Die Verlaufstabelle wird nicht in einer schreibgeschützten Dateigruppe platziert.

  10. Die Verlaufstabelle ist nicht für die Änderungsnachverfolgung oder Change Data Capture konfiguriert.

Datenkonsistenzprüfung

Bevor SYSTEM_VERSIONING auf ON festgelegt wird und im Rahmens eines Vorgangs in der Datenbearbeitungssprache (DML) führt das System die folgende Überprüfung durch: ValidTo >= ValidFrom

Wenn Sie einen Link zu einer bestehenden Verlaufstabelle erstellen, können Sie festlegen, ob eine Datenkonsistenzprüfung durchgeführt werden soll. Diese Datenkonsistenzprüfung stellt sicher, dass bestehende Datensätze sich nicht überschneiden und jeder Datensatz zeitliche Anforderungen erfüllt. Die Datenkonsistenzprüfung läuft standardmäßig. Führen Sie die Datenkonsistenzprüfung immer dann durch, wenn die Daten zwischen der aktuellen und der Verlaufstabelle möglicherweise nicht synchron sind. Führen Sie sie beispielsweise dann aus, wenn Sie eine bestehende Verlaufstabelle einbinden, die bereits Verlaufsdaten enthält.

Warnung

Manuelle Änderungen am Systemtakt führen dazu, dass das System unerwartet ausfällt, weil die Laufzeit-Datenkonsistenzprüfungen, die Überlappungsbedingungen verhindern (nämlich dass die Endzeit eines Datensatzes nicht kürzer als die Startzeit ist), fehlschlagen.

Verwenden Sie DBCC CHECKCONSTRAINTS

Der Befehl DBCC CHECKCONSTRAINTS enthält Konsistenzprüfungen temporaler Daten. Weitere Informationen finden Sie unter DBCC CHECKCONSTRAINTS.