Aracılığıyla paylaş


Güncelleştirilebilir kayıt defteri 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

Güncellenebilir kayıt defteri tabloları, kullanıcıların güncelleme ve silme işlemi yapabildiği ve aynı zamanda kurcalama kanıtı özellikleri sunan sistem sürümlü tablolardır. Güncelleştirmeler veya silmeler gerçekleştiğinde, bir satırın önceki tüm sürümleri geçmiş tablosu olarak bilinen ikincil bir tabloda korunur. Geçmiş tablosu güncelleştirilebilir kayıt defteri tablosunun şemasını yansıtır. Bir satır güncelleştirildiğinde, satırın en son sürümü kayıt defteri tablosunda kalırken, önceki sürümü sistem tarafından geçmiş tablosuna, uygulamaya saydam bir şekilde eklenir.

Hem güncelleştirilebilir kayıt defteri tabloları hem de zamansal tablolar , veritabanı altyapısının ikincil geçmiş tablolarındaki geçmiş satır sürümlerini yakaladığı sistem sürümü tablolardır. Her iki teknoloji de benzersiz avantajlar sağlar. Güncellenebilir defter tabloları, mevcut ve geçmiş verilerin üzerinde yapılan değişikliklerin tespit edilebilir olmasını sağlar. Zamana bağlı tablolar, yalnızca geçerli zamanda doğru olan veriler yerine herhangi bir noktada depolanan verilerin sorgulanması için destek sağlar. Hem güncelleştirilebilir kayıt defteri tabloları hem de zamana bağlı tablolar oluşturarak her iki teknolojiyi birlikte kullanabilirsiniz.

Kayıt defteri tablosu mimarisini gösteren diyagram.

LEDGER = ON ekstrenizde bağımsız değişkenini belirterek güncelleştirilebilir bir kayıt defteri tablosu oluşturabilirsiniz.

Tavsiye

LEDGER = ON , bir kayıt defteri veritabanında güncelleştirilebilir kayıt defteri tabloları oluştururken isteğe bağlıdır. Varsayılan olarak, her tablo bir kayıt defteri veritabanında güncelleştirilebilir bir kayıt defteri tablosudur.

T-SQL deyiminizde LEDGER argümanı belirttiğinizde kullanılabilen seçenekler hakkında bilgi için bkz. CREATE TABLE (Transact-SQL).

Önemli

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

Güncelleştirilebilir kayıt defteri tablo şeması

Güncelleştirilebilir bir kayıt defteri tablosunun, tabloda hangi işlemlerin değişiklik yaptığını ve satırların hareket 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. 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 kayıt defteri tablosunun ve kayıt defteri geçmişi tablosunun gerekli sütunlarını belirtmezseniz, sistem sütunları otomatik olarak ekler ve aşağıdaki varsayılan adları kullanır. Daha fazla bilgi için güncelleştirilebilir kayıt defteri tablosu oluşturma ile ilgili örneklere bakın.

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_sonu_işlem_kimliği bigint Satır sürümünü silen 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_son_sıra_numarası bigint Satır sürümünü silen bir işlem içindeki işlemin sıra numarası

Geçmiş tablosu

Güncelleştirilebilir bir kayıt defteri tablosu oluşturulduğunda geçmiş tablosu otomatik olarak oluşturulur. Geçmiş tablosu güncelleştirilebilir kayıt defteri tablosundaki güncelleştirmeler ve silmeler nedeniyle değiştirilen satırların geçmiş değerlerini yakalar. Geçmiş tablosunun şeması, ilişkili olduğu güncelleştirilebilir kayıt defteri tablosunun şemasını yansıtır.

Güncelleştirilebilir bir kayıt defteri tablosu oluşturduğunuzda, geçmiş tablonuzu içerecek şemanın adını ve geçmiş tablosunun adını belirtebilir veya sistemin geçmiş tablosunun adını oluşturup kayıt defteri tablosuyla aynı şemaya eklemesini sağlayabilirsiniz. Sistem tarafından oluşturulan adlara sahip geçmiş tabloları anonim geçmiş tabloları olarak adlandırılır. Anonim geçmiş tablosunun adlandırma kuralı.<schema><updatableledgertablename>. <GUID>MSSQL_LedgerHistoryFor_.

Defter görünümü

Sistem, güncelleştirilebilir her kayıt defteri tablosu için 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ü, güncelleştirilebilir kayıt defteri tablosunun ve ilişkili geçmiş tablosunun bir birleşimidir. Kayıt defteri görünümü, geçmiş tablosundaki geçmiş verileri birleştirerek güncelleştirilebilir kayıt defteri tablosunda gerçekleşen tüm satır değişikliklerini raporlar. Bu görünüm, kullanıcıların, iş ortaklarının veya denetçilerin tüm geçmiş işlemleri analiz etmelerini ve olası kurcalama durumlarını algılamalarını sağlar. Her satır işlemine, hareket eden işlemin kimliği ve işlemin bir DELETE veya INSERTolup olmadığı eşlik eder. Kullanıcılar, işlemin yürütülme zamanı ve bunu yürüten kullanıcının kimliği hakkında daha fazla bilgi alabilir ve bu işlem tarafından gerçekleştirilen diğer işlemlerle ilişkilendirebilir.

Örneğin, bir bankacılık senaryosunun işlem geçmişini izlemek istiyorsanız, genel muhasebe görünümü zaman içindeki işlemlerin tarihçesini sağlar. Kayıt defteri görünümünü kullanarak güncelleştirilebilir kayıt defteri tablosunu ve geçmiş tablolarını bağımsız olarak görüntülemeniz veya bunu yapmak için kendi görünümünüzü oluşturmanız gerekmez.

Kayıt defteri görünümünü kullanma örneği için bkz. Güncelleştirilebilir kayıt defteri tabloları oluşturma ve kullanma.

Kayıt defteri görünümünün şeması güncelleştirilebilir kayıt defteri ve geçmiş tablosunda tanımlanan sütunları yansıtır, ancak OLUŞTURULAN ALWAYS sütunları güncelleştirilebilir kayıt defteri ve geçmiş tablolarından farklıdı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.
defter_işlem_tipi_açıklaması nvarchar(128) INSERT veya DELETE içerir. Daha fazla bilgi için önceki satıra bakın.