Aracılığıyla paylaş


Yalnızca eklenebilir defter tabloları

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

Yalnızca ekleme kayıt defteri tabloları, yalnızca INSERT tablolarınızdaki işlemlere izin verir ve bu sayede veritabanı yöneticileri gibi ayrıcalıklı kullanıcıların geleneksel Veri İşleme Dili işlemleri aracılığıyla verileri değiştirememelerini sağlar. Sadece ekleme yapılabilen defter tabloları, kayıtları güncellemeyen veya silmeyen sistemler için idealdir; örneğin, güvenlik bilgi ve olay yönetim sistemleri veya verilerin blok zincirinden bir veritabanına kopyalanması gereken blok zinciri sistemleri gibi. Ekleme tablosu üzerinde UPDATE veya DELETE işlemleri olmadığından, güncelleştirilebilir kayıt defteri tablolarında olduğu gibi bir geçmiş tablosuna gerek yoktur.

Kayıt defteri tablolarının mimarisini gösteren diyagram.

CREATE TABLE (Transact-SQL) deyiminizde LEDGER = ON bağımsız değişkenini ve APPEND_ONLY = ON seçeneğini belirterek yalnızca ekleme yapılabilir bir defter tablosu oluşturabilirsiniz.

Önemli

Tablo kayıt defteri tablosu olarak oluşturulduktan sonra, kayıt defteri işlevselliği olmayan bir tabloya geri döndürülemez. Sonuç olarak, saldırgan kayıt defteri özelliklerini geçici olarak kaldıramaz, tabloda değişiklik yapamaz ve ardından kayıt defteri işlevselliğini yeniden etkinleştiremez.

Sadece eklemeli kayıt defteri tablosu şeması

Yalnızca ekleme tablosunun, tabloda hangi işlemlerin değişiklik yaptığını ve satırların işlem tarafından güncelleştirildiği işlemlerin sırasını belirten meta verileri içeren aşağıdaki GENERATED ALWAYS sütunlarına sahip olması gerekir. Yalnız eklemeli bir defter tablosu oluşturduğunuzda, GENERATED ALWAYS sütunları defter tablonuzda oluşturulacaktır. Bu veriler, verilerin zaman içinde nasıl eklendiğini anlamak amacıyla adli tıp açısından yararlıdır.

GENERATED ALWAYS deyiminde sütunların tanımlarını belirtmezseniz, sistem aşağıdaki varsayılan adları kullanarak bunları otomatik olarak ekler.

Varsayılan sütun adı Veri türü Description
ledger_start_transaction_id bigint Satır sürümü oluşturan işlemin kimliği
defter_başlangıç_sıra_numarası bigint Bir işlem içindeki, bir satır sürümü oluşturan işlemin sıra numarası

Defter görünümü

Yalnızca eklenen her kayıt defteri tablosu için sistem otomatik olarak genel muhasebe görünümü olarak adlandırılan bir görünüm oluşturur. Kayıt defteri görünümü, tabloda oluşan tüm satır eklemelerini raporlar. Kayıt defteri görünümü, yalnızca ekleme kayıt defteri tablolarında veya UPDATEDELETE özellikleri olmadığından, yalnızca ekleme kayıt defteri tabloları yerine güncelleştirilebilir kayıt defteri tablolarında öncelikli olarak yararlıdır. Yalnızca ekleme kayıt defteri tabloları için genel muhasebe görünümü, hem güncelleştirilebilir hem de yalnızca ekleme kayıt defteri tabloları arasında tutarlılık sağlamak üzere kullanılabilir durumdadır.

Defter görünümü şeması

Uyarı

Kayıt defteri görünümü sütun adları, <ledger_view_option> deyimiyle parametresi kullanılarak tablo oluşturduğunuzda özelleştirilebilir. Daha fazla bilgi için bkz. kayıt defteri görünümü seçenekleri ve CREATE TABLE (Transact-SQL) içindeki ilgili örnekler.

Varsayılan sütun adı Veri türü Description
defter_işlem_kimliği bigint Satır sürümünü oluşturan veya silen işlemin kimliği.
defter_sıra_numarası bigint Tablodaki işlem içindeki satır düzeyi işlemin sıra numarası.
ledger_işlem_tipi tinyint İçerir 1 (INSERT) veya 2 (DELETE). Kayıt defteri tablosuna satır eklemek, kayıt defteri görünümünde bu sütunu içeren 1 yeni bir satır oluşturur. Genel muhasebe tablosundan bir satırı silmek, kayıt defteri görünümünde bu sütunu içeren 2 yeni bir satır oluşturur. Genel muhasebe tablosundaki bir satırın güncelleştirilmesi, genel muhasebe görünümünde iki yeni satır oluşturur. Bir satır bu sütunda 2 (DELETE) içeriyor ve diğer satır 1 (INSERT) içeriyor. DELETE, yalnızca ekleme kayıt defteri tablosunda gerçekleşmemelidir.
defter_işlem_tipi_açıklaması nvarchar(128) INSERT veya DELETE içerir. Daha fazla bilgi için önceki satıra bakın.