Ändern des Schemas einer temporalen Tabelle mit Systemversion
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-DatenbankAzure SQL Managed Instance
Verwenden Sie die ALTER TABLE
-Anweisung, um eine Spalte hinzuzufügen, zu ändern oder zu entfernen.
Beispiele
Hier sind einige Beispiele, mit denen das Schema einer temporalen Tabelle geändert werden kann.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName varchar(100);
ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.mycompany.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
/* Setting IsHidden property for period columns.
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Wichtige Hinweise
Um das Schema der temporalen Tabelle zu ändern, ist dieCONTROL -Berechtigung für aktuelle Tabellen und Verlaufstabellen erforderlich.
Während eines Vorgangs
ALTER TABLE
verfügt das System für beide Tabellen über eine Schemasperre.Die angegebene Schemaänderung wird entsprechend an eine Verlaufstabelle weitergegeben (je nach Art der Änderung).
Das Hinzufügen von varchar(max), nvarchar(max), varbinary(max) oder XML-Spalten mit Standardwerten ist in allen Editionen von SQL Server ein Datenaktualisierungsvorgang.
Wenn die Zeilengröße nach dem Hinzufügen von Spalten den Grenzwert für die Zeilengröße überschreitet, können keine neuen Spalten online hinzugefügt werden.
Ziehen Sie das Entfernen von Standardeinschränkungen für die Verlaufstabelle in Betracht, sobald Sie eine Tabelle mit einer neuen NOT NULL-Spalte erweitert haben, da alle Spalten in dieser Tabelle automatisch durch das System befüllt werden.
Die Onlineoption (
WITH (ONLINE = ON
) hat keine Auswirkungen aufALTER TABLE ALTER COLUMN
temporale Tabellen mit Systemversion. Die ALTER-Spalte wird nicht als online ausgeführt, unabhängig davon, welcher Wert für die OPTION ONLINE angegeben wurde.Sie können verwenden
ALTER COLUMN
, um die Eigenschaft für Periodenspalten zu ändernIsHidden
.Sie können direct für die folgenden Schemaänderungen nicht verwenden
ALTER
. Legen Sie für diese Arten von Änderungen festSYSTEM_VERSIONING = OFF
.- Hinzufügen einer berechneten Spalte
- Hinzufügen einer IDENTITY -Spalte
- Hinzufügen einer SPARSE-Spalte oder Ändern einer vorhandenen Spalte in SPARSE , wenn die Verlaufstabelle auf
DATA_COMPRESSION = PAGE
oderDATA_COMPRESSION = ROW
festgelegt ist. Dies ist die Standardeinstellung für die Verlaufstabelle. - Hinzufügen von COLUMN_SET
- Hinzufügen einer ROWGUIDCOL -Spalte oder Ändern einer vorhandenen Spalte in ROWGUIDCOL
- Ändern einer NULL-Spalte in NOT NULL, wenn die Spalte Nullwerte in der aktuellen oder Verlaufstabelle enthält
Das folgende Beispiel veranschaulicht das Ändern des Schemas, bei dem die Einstellung SYSTEM_VERSIONING = OFF
noch erforderlich ist (Hinzufügen einer IDENTITY-Spalte ). In diesem Beispiel wird die Datenkonsistenzprüfung deaktiviert. Diese Überprüfung ist nicht erforderlich, wenn die Schemaänderung innerhalb einer Transaktion durchgeführt wird, da keine gleichzeitigen Datenänderungen auftreten können.
BEGIN TRANSACTION
ALTER TABLE [dbo].[CompanyLocation] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [CompanyLocation] ADD Cntr INT IDENTITY (1, 1);
ALTER TABLE [dbo].[CompanyLocationHistory] ADD Cntr INT NOT NULL
CONSTRAINT DF_Cntr DEFAULT 0;
ALTER TABLE [dbo].[CompanyLocation] SET
(
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT;
Nächste Schritte
- Temporale Tabellen
- Erste Schritte mit temporalen Tabellen mit Systemversionsverwaltung
- Verwalten der Beibehaltung von Verlaufsdaten in temporalen Tabellen mit Systemversionsverwaltung
- Temporale Tabellen mit Systemversionsverwaltung und speicheroptimierten Tabellen
- ALTER TABLE (Transact-SQL)
- Erstellen einer temporalen Tabelle mit Systemversionsverwaltung
- Ändern von Daten in einer temporalen Tabelle mit Systemversionsverwaltung
- Abfragen von Daten in einer temporalen Tabelle mit Systemversionsverwaltung
- Beenden der Versionsverwaltung auf einer versionsverwalteten temporalen Tabelle
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für