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.
Gilt für: SQL Server 2016 (13.x) und spätere Versionen
Azure SQL-Datenbank
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Verwenden Sie die Anweisung ALTER TABLE, um eine Spalte hinzuzufügen, zu ändern oder zu entfernen.
Bemerkungen
Sie benötigen CONTROL Berechtigungen für die aktuellen und historischen Tabellen, um das Schema einer temporalen Tabelle zu ändern.
Während eines ALTER TABLE-Vorgangs richtet das System eine Schemasperre auf beide Tabellen ein.
Die Datenbank-Engine leitet die Schemaänderung je nach Art der Änderung in die Versionstabelle weiter.
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 einer Spalte das Zeilengrößenlimit überschreitet, kannst du online keine neuen Spalten hinzufügen.
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 das System alle Spalten in dieser Tabelle automatisch befüllt.
Die Onlineoption (WITH (ONLINE = ON) hat keine Auswirkungen auf ALTER TABLE ALTER COLUMN in temporalen Tabellen. Die Spaltenoperation ALTER läuft nicht online, egal welchen Wert du für die ONLINE Option angibst.
Sie können ALTER COLUMN verwenden, um die IsHidden-Eigenschaft für Zeitraumspalten zu ändern.
Sie können keine direkte ALTER-Anweisung für die folgenden Schemaänderungen verwenden. Legen Sie für diese Arten von Änderungen SYSTEM_VERSIONING = OFF fest.
- Hinzufügen einer berechneten Spalte
- Hinzufügen einer
IDENTITY-Spalte - Hinzufügen einer Spalte
SPARSEoder Ändern einer vorhandenen Spalte inSPARSE, wenn die Verlaufstabelle aufDATA_COMPRESSION = PAGEoderDATA_COMPRESSION = ROWfestgelegt ist, was die Standardeinstellung für die Verlaufstabelle ist. - Hinzufügen von
COLUMN_SET - Eine Spalte hinzufügen oder eine bestehende Spalte
ROWGUIDCOLändern, um zu seinROWGUIDCOL - Ändern einer
NULL-Spalte inNOT NULL, wenn die Spalte Nullwerte in der aktuellen oder Verlaufstabelle enthält
Beispiele
A. Ändern des Schemas einer temporalen Tabelle
Hier sind einige Beispiele, die das Schema einer zeitlichen Tabelle verändern.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName VARCHAR (100);
ALTER TABLE dbo.Department
ADD WebAddress NVARCHAR (255)
CONSTRAINT DF_WebAddress DEFAULT 'www.example.com' NOT NULL;
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
B. Fügen Sie Zeitraumspalten mit dem HIDDEN-Flag hinzu
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Mit ALTER COLUMN <period_column> DROP HIDDEN können Sie die Kennzeichnung „Ausgeblendet“ bei einer Zeitraumspalte entfernen.
C. Ändern Sie das Schema bei auf OFF festgelegtem SYSTEM_VERSIONING
Das folgende Beispiel zeigt, wie das Schema geändert wird, wenn SYSTEM_VERSIONING = OFF noch festgelegt werden muss (durch Hinzufügen einer Spalte IDENTITY). In diesem Beispiel wird die Datenkonsistenzprüfung deaktiviert. Diese Prüfung ist unnötig, wenn man innerhalb einer Transaktion das Schema ändert, 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
CONSTRAINT DF_Cntr DEFAULT 0 NOT NULL;
ALTER TABLE [dbo].[CompanyLocation]
SET (
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT TRANSACTION;
Verwandte Inhalte
- Temporale Tabellen
- Einführung in systemversionierte temporale Tabellen
- Aufbewahrung historischer Daten in systemversionierten temporalen Tabellen verwalten
- Systemversionsverwaltete temporale Tabellen mit speicheroptimierten Tabellen
- ALTER TABLE (Transact-SQL)
- Erstellen Sie eine systemversionierte temporale Tabelle
- Ändern von Daten in einer systemversionierten temporalen Tabelle
- Daten in einer systemversionierten temporalen Tabelle abfragen
- Systemversionierung für eine systemversionierte temporale Tabelle beenden