Aracılığıyla paylaş


Kayıt defteriyle ilgili önemli noktalar ve sınırlamalar

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri Azure SQL VeritabanıAzure SQL Yönetilen Örneği

Kayıt defteri tablolarıyla çalışırken, sistem sürümü oluşturmanın ve sabit verilerin doğasından dolayı dikkat edilmesi gereken bazı önemli noktalar ve sınırlamalar vardır.

Genel dikkat edilmesi gerekenler ve sınırlamalar

Kayıt defteriyle çalışırken aşağıdakileri göz önünde bulundurun.

  • Kayıt defteri özelliği açık olarak ayarlanmış bir veritabanı olan kayıt defteri veritabanı, kayıt defteri özelliği kapalı olarak ayarlanmış normal bir veritabanına dönüştürülemez.
  • Veritabanı özetlerinin otomatik olarak oluşturulması ve depolanması şu anda Azure SQL Veritabanı'nda kullanılabilir ancak SQL Server'da desteklenmez.
  • Azure Depolama sabit bloblarını kullanarak kayıt defteri tablolarıyla otomatik özet yönetimi, kullanıcıların yerel olarak yedekli depolama (LRS) hesaplarını kullanmasına olanak sağlamaz.
  • Bir kayıt defteri veritabanı oluşturulduğunda, veritabanında varsayılan olarak oluşturulan tüm yeni tablolar (yan tümce belirtilmeden APPEND_ONLY = ON ) güncelleştirilebilir kayıt defteri tabloları olur. Yalnızca ekleme yapılabilir kayıt defteri tabloları oluşturmak için APPEND_ONLY = ON deyimlerinde yan tümcesini kullanın.
  • Bir işlem en fazla 200 kayıt defteri tablosunu güncelleştirebilir.

Genel muhasebe tablosuyla ilgili dikkat edilmesi gerekenler ve sınırlamalar

  • Kayıt defteri tabloları olmayan bir veritabanındaki mevcut tablolar kayıt defteri tablolarına dönüştürülemez. Daha fazla bilgi için bkz . Verileri normal tablolardan kayıt defteri tablolarına geçirme.
  • Kayıt defteri tablosu oluşturulduktan sonra, kayıt defteri tablosu olmayan bir tabloya geri döndürülemez.
  • Yalnızca ek kayıt defteri tablolarındaki veya güncelleştirilebilir kayıt defteri tablolarının geçmiş tablosundaki eski verilerin silinmesi desteklenmez.
  • TRUNCATE TABLE desteklenmez.
  • Güncelleştirilebilir bir kayıt defteri tablosu oluşturulduğunda, kayıt defteri tablosuna dört CREATED ALWAYS sütunu ekler. Yalnızca eklemeye izin veren kayıt defteri tablosu, kayıt defteri tablosuna iki sütun ekler. Bu yeni sütunlar, Azure SQL Veritabanı'nda desteklenen en fazla sütun sayısına (1.024) göre sayılır.
  • Bellek içi tablolar desteklenmez.
  • Seyrek sütun kümeleri desteklenmez.
  • SWITCH IN/OUT bölümü desteklenmez.
  • DBCC CLONEDATABASE desteklenmez.
  • Kayıt defteri tablolarında tam metin dizinleri olamaz.
  • Kayıt defteri tabloları grafik tablosu olamaz.
  • Kayıt defteri tabloları FileTable olamaz.
  • Kayıt defteri tablolarında kümelenmiş columnstore dizini olduğunda kümelenmemiş bir satır deposu indisi olamaz.
  • Geçmiş tablosunda değişiklik izlemeye izin verilmez, ancak kayıt defteri tablolarında izin verilir.
  • Geçmiş tablosunda değişiklik verisi yakalamaya izin verilmez, ancak kayıt defteri tablolarında izin verilir.
  • Kayıt defteri tablolarında işlem çoğaltması desteklenmez.
  • Veritabanı yansıtma desteklenmez.
  • Azure Synapse Link yalnızca kayıt defteri tablosu için desteklenir, geçmiş tablosu için desteklenmez.
  • Azure SQL Yönetilen Örneği'ne veritabanı yedeklemesinin yerel geri yüklemesinin ardından özet yolunu el ile değiştirin.
  • Azure SQL Yönetilen Örneği'ne bir Yönetilen Örnek bağlantısı oluşturulduktan sonra özet yolunu el ile değiştirin.
  • SQL Data Sync, kayıt defteri tablolarında desteklenmez.

Desteklenmeyen veri türleri

  • XML
  • SqlVariant
  • Kullanıcı tanımlı veri türü
  • DOSYA AKıŞı
  • Vektör

Zamana bağlı tablo sınırlamaları

Güncelleştirilebilir kayıt defteri tabloları , zamana bağlı tabloların teknolojisini temel alır ve sınırlamaların çoğunu devralır ancak bunların tümünü devralmaz. Geçici tablolardan devralınan sınırlamaların listesi aşağıdadır.

  • Geçmiş tablosunun adı geçmiş tablosu oluşturulurken belirtilirse, şemayı ve tablo adını ve aynı zamanda kayıt defteri görünümünün adını belirtmeniz gerekir.
  • Varsayılan olarak, geçmiş tablosu PAGE biçiminde sıkıştırılmıştır.
  • Geçerli tablo bölümlenmişse, geçmiş tablosu varsayılan dosya grubunda oluşturulur çünkü bölümleme yapılandırması geçerli tablodan geçmiş tablosuna otomatik olarak çoğaltılmaz.
  • Zamana bağlı ve geçmiş tabloları FILETABLE olamaz ve FILESTREAM dışında desteklenen herhangi bir veri türünün sütunlarını içerebilir. FILETABLE ve FILESTREAM, SQL Server dışında veri işlemeye izin verir ve bu nedenle sistem sürümü oluşturma garanti edilemez.
  • Düğüm veya kenar tablosu zamansal tablo olarak oluşturulamaz veya değiştirilemez. Graf kayıt defteriyle desteklenmez.
  • Zamana bağlı tablolar , (n)varchar(max), varbinary(max)ve (n)textgibi imageblob veri türlerini desteklese de, önemli depolama maliyetlerine neden olur ve boyutları nedeniyle performans etkileri olur. Bu nedenle, sisteminizi tasarlarken bu veri türleri kullanılırken dikkatli olunmalıdır.
  • Geçmiş tablosu geçerli tabloyla aynı veritabanında oluşturulmalıdır. Bağlı Sunucu üzerinden zamansal sorgulama desteklenmez.
  • Geçmiş tablosunda kısıtlamalar (Birincil Anahtar, Yabancı Anahtar, tablo veya sütun kısıtlamaları) olamaz.
  • Sistem sürümüyle uyumlu zamana bağlı bir tablo söz konusu olduğunda, çevrimiçi seçeneğin (WITH (ONLINE = ON) ALTER TABLE ALTER COLUMN üzerinde hiçbir etkisi yoktur. ALTER COLUMN seçeneği için hangi değer belirtilmiş olursa olsun, çevrimiçi olarak gerçekleştirilmez.
  • INSERT ve UPDATE ifadeleri GENERATED ALWAYS sütunlarına başvuramaz. Doğrudan bu sütunlara değer ekleme girişimleri engellenir.
  • UPDATETEXT ve WRITETEXT desteklenmez.
  • Geçmiş tablosunda tetikleyicilere izin verilmemektedir.
  • Çoğaltma teknolojilerinin kullanımı sınırlıdır:
    • Always On: Tam olarak desteklenir
    • Anlık görüntü, birleştirme ve işlem çoğaltması: Zamana bağlı tablolar için desteklenmez
  • Geçmiş tablosu, geçmiş tabloları zincirinde geçerli tablo olarak yapılandırılamaz.
  • Geçmiş tablosu oluşturulduğunda aşağıdaki nesneler veya özellikler geçerli tablodan geçmiş tablosuna çoğaltılamaz:
    • Dönem tanımı
    • Kimlik tanımı
    • Dizinler
    • İstatistikler
    • Kısıtlamaları denetleme
    • Tetikleyiciler
    • Bölümleme yapılandırması
    • İzinler
    • Satır düzeyi güvenlik önkoşulları

Şema değişiklikleriyle ilgili dikkat edilmesi gerekenler

Sütun ekleme

Boş değer atanabilir sütun ekleme desteklenir. Null değer atanamayan sütunlar eklenmesi desteklenmez. Ledger, satır sürümünün karmasını hesapladığında NULL değerlerini göz ardı edecek şekilde tasarlanmıştır. Buna bağlı olarak, boş değer atanabilir bir sütun eklendiğinde kayıt defteri ve geçmiş tablolarının şemasını yeni sütunu içerecek şekilde değiştirir, ancak bu, var olan satırların karmalarını etkilemez. Defter tablolarına sütun ekleme sys.ledger_column_history'de kaydedilir.

Sütunları ve tabloları silme

Normalde, bir sütun veya tabloyu silmek, altında yatan verileri veritabanından tamamen siler ve bu, verilerin değişmez olmasını gerektiren ledger işlevselliğiyle temel olarak uyumsuzdur. Kayıt defteri, verileri silmek yerine bırakılan nesneleri kullanıcı şemasından mantıksal olarak kaldırılacak ancak fiziksel olarak veritabanında kalacak şekilde yeniden adlandırır. Bırakılan sütunlar kayıt defteri tablosu şemasından da gizlenir, böylece bunlar kullanıcı uygulaması tarafından görünmez. Ancak, bu tür bırakılan nesnelerin verileri kayıt defteri doğrulama işlemi için kullanılabilir durumda kalır ve kullanıcıların ilgili kayıt defteri görünümleri aracılığıyla geçmiş verileri incelemesine olanak tanır. Kayıt defteri tablolarındaki sütunların bırakılması sys.ledger_column_history tarafından yakalanır. Kayıt defteri tablosunun silinmesi sys.ledger_table_history içinde kaydedilir. Defter tablolarının ve bağımlı nesnelerinin silinmesi, sistem kataloğu görünümlerinde silinmiş olarak işaretlenir ve yeniden adlandırılır.

  • Bırakılan kayıt defteri tabloları is_dropped_ledger_table içinde ayarlanarak bırakıldı olarak işaretlenir ve aşağıdaki biçim kullanılarak yeniden adlandırılır: MSSQL_DroppedLedgerTable_<dropped_ledger_table_name>_<GUID>.
  • Güncelleştirilebilir kayıt defteri tabloları için bırakılan geçmiş tabloları şu biçim kullanılarak yeniden adlandırılır: MSSQL_DroppedLedgerHistory_<dropped_history_table_name>_<GUID>.
  • Bırakılan kayıt defteri görünümleri is_dropped_ledger_view içinde ayarlanarak bırakıldı olarak işaretlenir ve aşağıdaki biçim kullanılarak yeniden adlandırılır: MSSQL_DroppedLedgerView_<dropped_ledger_view_name>_<GUID>.

Uyarı

Yeniden adlandırılan tablo veya görünümün uzunluğu 128 karakteri aşıyorsa, bırakılan kayıt defteri tablolarının, geçmiş tablolarının ve genel muhasebe görünümlerinin adı kesilebilir.

Sütunları Değiştirme

Kayıt defteri tablosunun temel verilerini etkilemeyen değişiklikler, kayıt defterinde yakalanan karmaları etkilemediğinden özel işleme olmadan desteklenir. Bu değişiklikler şunları içerir:

  • Null atanabilirliği değiştirme
  • Unicode dizeleri için harmanlama
  • Değişken uzunluklu sütunların uzunluğu

Ancak, veri türünü değiştirme gibi mevcut verilerin biçimini etkileyebilecek işlemler desteklenmez.