Aracılığıyla paylaş


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 DatabaseAzure SQL Managed InstanceSQL 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

Zamansal bir tabloda belirli bakım işlemleri gerçekleştirmek istiyorsanız veya artık sürümlenmiş tabloya ihtiyacınız yoksa sistem sürümü oluşturmayı durdurun. Bu işlem nedeniyle iki bağımsız tablo alırsınız:

  • 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 ayarladığınızda ve SYSTEM_TIME dönemini kaldırmadığınızda, sistem her ekleme ve güncelleştirme işlemi için dönem sütunlarını güncelleştirmeye 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.

Başka nesneleriniz SYSTEM_VERSIONING = OFF’ye başvurarak zamansal sorgu uzantılarını kullanarak SCHEMABINDING ile oluşturulmuşsa, SYSTEM_TIME'ı tanımlayamazsı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);

-- Optionally, DROP PERIOD if you want to revert temporal table to a non-temporal
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;

SYSTEM_VERSIONING'i geçici olarak kaldırma

Aşağıdaki liste, sistem sürümü oluşturmanın OFFolarak ayarlanmasını gerektiren işlemlerin listesini içerir:

  • Gereksiz verileri geçmişten kaldırma (DELETE veya TRUNCATE)
  • Sürüm oluşturmadan geçerli tablodan veri 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ü yeniden açarken HISTORY_TABLE bağımsız değişkenini belirtmeyi unutmayın. Bunun başarısız olması, yeni bir geçmiş tablosunun oluşturulmasına ve geçerli tabloyla ilişkilendirilmesine neden olur. Özgün geçmiş tablosu hala normal bir tablo olarak bulunabilir, artık geçerli tabloyla ilişkilendirilmemiştir.

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;