Temporal Table

Serdar BAYRAK

Updated on:

Temporal table güncel olarak kullandığımız tablolarda yapılan UPDATE ve DELETE işlemlerin daha önceki kayıtlar hakkında bilgisini tutmamızı sağlar.
Bunun bir diğer yöntemi cdc dir. Fakat cdc sistemde ciddi bir maliyet oluşturduğu için bu yöntem tercih edilmektedir. CDC hakkında detaylı bilgi için Sql Server Change Data Capture Aktif Etme adlı makaleyi inceleyebilirsiniz.
Sql Server 2022 ile birlikte Ledger özelliği ile hash yapıda tutarak daha da güvenlikli hale getirmiştir.
Temporal Table özelliği aktif edilecek tabloda Primary Key mutlaka olmalı. Eğer yoksa eklenmeli fakat bu işlem transaction yoğunluğu olan tabloda yapılırken dikkatli yapılmalı!!!
Biz işlemlerimizi hali hazırda güncel olarak kullanılan tablo için yapacağımız. Örneği denemek isteyenler için tablonun yapısını aşağıda bulabilirsiniz.

—1.Temproral Table Create for Existing table (Adding Two New Column related to Datetime)

BeginDate, EndDate kolonları eklendikten sonra GENERATED ALWAYS AS ROW END NOT NULL şeklinde tabloda oluşacaklar. Bu değerler default olarak SYSUTCDATETIME değerinden gelecek. Burada yaşanabilecek en büyük sıkıntı Türkiye saati GMT+3 olduğu için versioning yaparken transactionlar her zaman 3 saat gerinden yapılmış gibi göreceksiniz. Bu nokta dikkat edilmesi gereken husustur.
–2.Update and Delete Transaction log Information Table

Yukarıda ki komut ile tabloda system_versioning özelliği aktif edilerek. Tabloda yapılacak tüm UPDATE ve DELETE işlemleri History Tablosunda tutulacaktır.

–3.Adding New Row in Temporal Table (Insert Transaction)

–4.Update Transaction existing data in Temporal Table (Update Transaction)

–5.Delete Transaction updating data in Temporal Table (Delete Transaction)

Aktif ettikten sonra temporal table özelliğini tekrar kapatabiliriz. Bunun için aşağıdaki scriptleri kullanabilirsiniz.

–1.Temproral Table Off

–2.Temproral table system_time drop

–Creating two column drop

Yorum yapın