Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Sütun eklemek, değiştirmek veya kaldırmak için ALTER TABLE deyimini kullanın.
Remarks
Geçerli ve geçmiş tablolarında CONTROL izni, zamansal tablonun şemasını değiştirmek için gereklidir.
Bir ALTER TABLE işlemi sırasında sistem her iki tabloda da şema kilidi tutar.
Belirtilen şema değişikliği, geçmiş tablosuna uygun şekilde yayılır (değişikliğin türüne bağlı olarak).
varchar(max), nvarchar(max), varbinary(max) veya XML sütunlarını varsayılan olarak eklemek, SQL Server'ın tüm sürümlerinde bir güncelleştirme verisi işlemidir.
Sütun eklemeden sonra satır boyutu satır boyutu sınırını aşarsa, yeni sütunlar çevrimiçi eklenemez.
Tabloyu yeni bir NOT NULL sütunuyla genişlettikten sonra, sistem bu tablodaki tüm sütunları otomatik olarak doldurduğundan, geçmiş tablosundaki varsayılan kısıtlamayı düşürmeyi düşünebilirsiniz.
Çevrimiçi seçeneğin (WITH (ONLINE = ON) zamansal tablolarla ALTER TABLE ALTER COLUMN üzerinde hiçbir etkisi yoktur.
ALTER sütun, ONLINE seçeneği için hangi değerin belirtildiğinden bağımsız olarak çevrimiçi olarak gerçekleştirilmez.
Dönem sütunlarının ALTER COLUMN özelliğini değiştirmek için IsHidden kullanabilirsiniz.
Aşağıdaki şema değişiklikleri için doğrudan ALTER kullanamazsınız. Bu tür değişiklikler için SYSTEM_VERSIONING = OFFayarlayın.
- Hesaplanan sütun ekleme
-
IDENTITYsütunu ekleme - Geçmiş tablosu
SPARSEveyaSPARSEolarak ayarlandığındaDATA_COMPRESSION = PAGEsütun ekleme veya var olan sütunuDATA_COMPRESSION = ROWolacak şekilde değiştirme, geçmiş tablosunun varsayılanıdır. -
COLUMN_SETekleme -
ROWGUIDCOLsütunu ekleme veya var olan sütunuROWGUIDCOLolacak şekilde değiştirme - Geçerli veya geçmiş tablosunda sütun null değerler içeriyorsa,
NULLsütunuNOT NULLolarak değiştirilecektir.
Examples
A. Zamana bağlı tablonun şemasını değiştirme
Zamansal tablonun şemasını değiştiren bazı örnekler aşağıda verilmiştir.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName varchar(100);
ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.example.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
B. HIDDEN bayrağını kullanarak dönem sütunları ekle
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Dönem sütunundaki gizli bayrağı kaldırmak için ALTER COLUMN <period_column> DROP HIDDEN kullanabilirsiniz.
C. SYSTEM_VERSIONING off olarak ayarlanmış şemayı değiştirme
Aşağıdaki örnekte, SYSTEM_VERSIONING = OFF ayarının hala gerekli olduğu şemanın değiştirilmesi (IDENTITY sütun ekleme) gösterilmektedir. Bu örnek, veri tutarlılığı denetimini devre dışı bırakır. Eşzamanlı veri değişikliği yapılamayabileceği için şema değişikliği bir işlem içinde yapıldığında bu denetim gereksizdir.
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;
İlgili içerik
- Zamansal tablolar
- Sistem sürümüne sahip zamana bağlı tabloları kullanmaya başlama
- Sistem sürümündeki zamana bağlı tablolarda geçmiş verileri saklamayı yönetme
- Bellek için optimize edilmiş tablolarla sürümlemeli zamana bağlı tablolar
- ALTER TABLE (Transact-SQL)
- Sistem versiyonlu geçici bir tablo oluşturma
- Sistem sürümüne sahip bir zamana bağlı tablodaki verileri değiştirme
- Sistem sürümüne sahip bir zamana bağlı tablodaki verileri sorgulama
- Sistem sürümlemeyi içeren zamana bağlı bir tabloda sistem sürümlemesini durdurma