Systemkonsistenzprüfungen von temporalen Tabellen

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance

Mit temporalen Tabellen führt das System mehrere Konsistenzprüfungen durch, um sicherzustellen, dass das Schema die Anforderungen an temporale Tabellen erfüllt, und dass die Daten konsistent sind und bleiben. Darüber hinaus sind temporale Prüfungen in der DBCC CHECKCONSTRAINTS-Anweisung verfügbar.

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 werden in Schemaüberprüfungen und Datenüberprüfungen gruppiert (sofern die Tabelle nicht leer ist). Darüber hinaus führt das System auch eine Konsistenzprüfung der Laufzeit durch.

Schemaüberprüfung

Wenn eine temporale Tabelle erstellt oder eine vorhandene Tabelle dahingehend geändert wird, überprüft das System, ob die Anforderungen erfüllt werden:

  1. Die Namen und die Anzahl der Spalten sind in der aktuellen Tabelle und der Verlaufstabelle identisch.

  2. Die Datentypen jeder Spalte in der aktuellen Tabelle und der Verlaufstabelle entsprechen einander.

  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. Es wurden keine Tabellen- oder Spalteneinschränkungen für die Verlaufstabelle definiert. Standardspaltenwerte sind für die Verlaufstabelle jedoch zulässig.

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

  10. Die Verlaufstabelle wurde 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 vorhandenen Verlaufstabelle erstellen, können Sie eine Datenkonsistenzprüfung durchführen. Diese Datenkonsistenzprüfung stellt sicher, dass vorhandene Einträge sich nicht überlappen, und dass temporale Anforderungen für jeden einzelnen Eintrag erfüllt werden. Die Datenkonsistenzprüfung ist standardmäßig aktiviert. Sie sollten die Datenkonsistenzprüfung immer dann durchführen, wenn Daten zwischen der aktuellen und der Verlaufstabelle möglicherweise nicht mehr synchronisiert sind. Dies geschieht z. B., wenn eine vorhandene Verlaufstabelle mit Verlaufsdaten aufgefüllt wird.

Warnung

Manuelle Änderungen an der Systemuhr führen zu unerwarteten Systemfehlern, da bei den Konsistenzprüfungen der Datenlaufzeit, die Überlappungsbedingungen verhindern sollen (d. h. dass die Endzeit für einen Eintrag nicht kleiner als die Startzeit ist), ein Fehler auftritt.

Verwenden von DBCC CHECKCONSTRAINTS

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