Beenden der Versionsverwaltung in einer temporalen Tabelle mit Systemversionsverwaltung
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance
Möglicherweise möchten Sie die Versionsverwaltung Ihrer temporalen Tabelle vorübergehend oder dauerhaft beenden. Sie können dazu die SYSTEM_VERSIONING
-Klausel auf OFF
festlegen.
Festlegen von SYSTEM_VERSIONING = OFF
Beenden Sie die Systemversionsverwaltung, wenn Sie bestimmte Wartungsvorgänge für eine temporäre Tabelle ausführen möchten, oder wenn Sie eine Tabelle mit Versionsverwaltung nicht mehr benötigen. Durch diesen Vorgang erhalten Sie zwei voneinander unabhängige Tabellen:
- Aktuelle Tabelle mit einer Punktdefinition
- Verlaufstabelle als normale Tabelle
Hinweise
Die Verlaufstabelle stoppt die Erfassung der Aktualisierungen während SYSTEM_VERSIONING = OFF
.
Bei einer temporalen Tabelle tritt kein Datenverlust auf, wenn Sie SYSTEM_VERSIONING = OFF
festlegen oder den Zeitraum für SYSTEM_TIME
löschen.
Wenn Sie SYSTEM_VERSIONING = OFF
festlegen und den SYSTEM_TIME
-Zeitraum nicht löschen, setzt das System die Aktualisierung der Zeitraumspalten für jeden Einfüge- und Aktualisierungsvorgang fort. Löschungen in der aktuellen Tabelle sind dauerhaft.
Sie müssen den SYSTEM_TIME
-Zeitraum löschen, um die Zeitraumspalten zu löschen. Verwenden Sie ALTER TABLE <table> DROP <column>;
zum Entfernen der Zeitraumspalten. Weitere Informationen finden Sie unter Ändern des Schemas einer temporalen Tabelle mit Systemversionsverwaltung.
Wenn Sie SYSTEM_VERSIONING = OFF
festlegen, können alle Benutzer mit ausreichenden Berechtigungen das Schema und den Inhalt der Verlaufstabelle ändern oder diese sogar endgültig löschen.
Sie können SYSTEM_VERSIONING = OFF
nicht festlegen, wenn Sie mithilfe temporaler Abfrageerweiterungen andere Objekte mit SCHEMABINDING
erstellt haben,wie z. B. Verweise auf SYSTEM_TIME
. Diese Einschränkung verhindert, dass es bei diesen Objekten zu Fehlern kommt, wenn Sie SYSTEM_VERSIONING = OFF
festlegen.
Dauerhaftes Entfernen von SYSTEM_VERSIONING
In diesem Beispiel wird SYSTEM_VERSIONING
endgültig entfernt, und die Zeitraumspalten werden gelöscht. Das Entfernen der Zeitraumspalten ist optional.
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
-- Optionally, DROP PERIOD if you want to revert temporal table to a non-temporal
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;
Vorübergehendes Entfernen von SYSTEM_VERSIONING
Die folgende Liste enthält die Vorgänge, für die die Systemversionsverwaltung auf OFF
festgelegt werden muss:
- Entfernen unnötiger Daten aus dem Verlauf (
DELETE
oderTRUNCATE
) - Entfernen von Daten aus der aktuellen Tabelle ohne Versionsverwaltung (
DELETE
,TRUNCATE
) - Partition
SWITCH OUT
aus der aktuellen Tabelle - Partition
SWITCH IN
in die Verlaufstabelle
In diesem Beispiel wird SYSTEM_VERSIONING
vorübergehend beendet, um bestimmte Wartungsvorgänge zu erlauben. Wenn Sie Versionsverwaltung als Voraussetzung für die Tabellenwartung vorübergehend beenden, empfehlen wir nachdrücklich, diese Änderung für die Datenkonsistenz innerhalb einer Transaktion vorzunehmen.
Wenn Sie die Systemversionsverwaltung wieder aktivieren, vergessen Sie nicht, das Argument HISTORY_TABLE
anzugeben. Andernfalls wird eine neue Verlaufstabelle erstellt und der aktuellen Tabelle zugeordnet. Die ursprüngliche Verlaufstabelle kann dann weiterhin als normale Tabelle vorhanden sein, wird der aktuellen Tabelle aber nicht mehr zugeordnet.
BEGIN TRANSACTION;
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
TRUNCATE TABLE [History].[DepartmentHistory]
WITH (PARTITIONS(1, 2));
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.DepartmentHistory));
COMMIT;
Zugehöriger Inhalt
- Temporale Tabellen
- Erste Schritte mit temporalen Tabellen mit Systemversionsverwaltung
- Verwalten der Beibehaltung von Verlaufsdaten in temporalen Tabellen mit Systemversionsverwaltung
- Temporale Tabellen mit Systemversionsverwaltung für speicheroptimierte Tabellen
- Erstellen einer temporären Tabelle mit Systemversionsverwaltung
- Ändern von Daten in einer temporalen Tabelle mit Systemversionsverwaltung
- Abfragen von Daten in einer temporalen Tabelle mit Systemversionsverwaltung
- Ändern des Schemas einer temporalen Tabelle mit Systemversionsverwaltung