Sistem sürümüne sahip bir zamana bağlı tabloda sistem sürümü oluşturmayı durdurma

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL VeritabanıAzure SQL Yönetilen ÖrneğiSQL database in Microsoft Fabric

Geçici tablonuzda sürüm oluşturma işlemini geçici veya kalıcı olarak durdurmak isteyebilirsiniz. bunu yapmak için SYSTEM_VERSIONING yan tümcesini OFFolarak ayarlayabilirsiniz.

SİSTEM_SÜRÜMLENDİRME = KAPALI ayarla

Belirli bakım işlemlerini zamansal bir tabloda yapmak istiyorsanız veya artık sürümlü bir tabloya ihtiyacınız yoksa sistem sürümlemeyi durdurun. Bu işlem size iki bağımsız tablo verir:

  • Dönem tanımına sahip geçerli tablo
  • Geçmiş tablosu, normal tablo olarak

Remarks

Geçmiş tablosu, SYSTEM_VERSIONING = OFFsırasında güncelleştirmeleri kaydetmeyi durdurur.

SYSTEM_VERSIONING = OFF ayarladığınızda veya SYSTEM_TIME dönemi bıraktığınızda zamansal tabloda veri kaybı olmaz.

SYSTEM_VERSIONING = OFF ayarlayıp SYSTEM_TIME dönemini kaldırmadığınızda, sistem her ekleme ve güncelleme işleminde dönem sütunlarını güncellemeye devam eder. Geçerli tablodaki silme işlemleri kalıcıdır.

Dönem sütunlarını silmek için SYSTEM_TIME dönemi kaldırmanız gerekir. Dönem sütunlarını kaldırmak için ALTER TABLE <table> DROP <column>;kullanın. Daha fazla bilgi için bkz. Sistem sürümüne sahip bir zamana bağlı tablonun şemasını değiştirme.

SYSTEM_VERSIONING = OFFayarladığınızda, yeterli izinlere sahip tüm kullanıcılar geçmiş tablosunun şemasını ve içeriğini değiştirebilir, hatta geçmiş tablosunu kalıcı olarak silebilir.

SCHEMABINDING ile oluşturulmuş ve SYSTEM_TIME'ye başvurma gibi zamansal sorgu uzantıları kullanan başka nesneleriniz varsa, SYSTEM_VERSIONING = OFF ayarlayamazsınız. Bu kısıtlama, SYSTEM_VERSIONING = OFFayarlarsanız bu nesnelerin başarısız olmasını önler.

SYSTEM_VERSIONING'i kalıcı olarak kaldırmak

Bu örnek, SYSTEM_VERSIONING kalıcı olarak kaldırır ve dönem sütunlarını siler. Dönem sütunlarının kaldırılması isteğe bağlıdır.

ALTER TABLE dbo.Department
    SET (SYSTEM_VERSIONING = OFF);

İsteğe bağlı olarak, zamansal tabloyu yeniden zamansal olmayan bir tabloya dönüştürmek istiyorsanız PERIOD tanımını kaldırın.

ALTER TABLE dbo.Department
    DROP PERIOD FOR SYSTEM_TIME;

SYSTEM_VERSIONING'i geçici olarak kaldırma

Aşağıdaki işlemler için sistem sürümünü şu OFFşekilde ayarlamanız gerekir:

  • Gereksiz verileri geçmişten kaldırma (DELETE veya TRUNCATE)
  • Mevcut tablodan veri sürüm olmadan kaldırma (DELETE, TRUNCATE)
  • Geçerli tablodan bölme SWITCH OUT
  • SWITCH IN bölümünü geçmiş tablosuna ayır

Bu örnek, belirli bakım işlemlerini gerçekleştirmenize olanak sağlamak için SYSTEM_VERSIONING geçici olarak durdurur. Tablo bakımı önkoşulu olarak sürüm oluşturmayı geçici olarak durdurursanız, veri tutarlılığını korumak için bu değişikliği bir işlem içinde yapmanızı kesinlikle öneririz.

Sistem sürümünü tekrar açtığınızda, argümanı HISTORY_TABLE belirtin. Eğer yapmazsanız, sistem yeni bir geçmiş tablosu oluşturur ve bunu mevcut tabloyla ilişkilendirir. Orijinal geçmiş tablosu normal bir tablo olarak var olabilir, ancak artık mevcut tabloyla ilişkilendirilmez.

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 TRANSACTION;