Azure SQL Veritabanı tablolarını oluşturma

ŞUNUN İÇİN GEÇERLİDİR: Azure SQL Database

Not

Azure SQL Veritabanı defteri şu anda genel önizlemededir.

Güncel kayıt defteri tabloları, kullanıcıların güncelleştirme ve silme gerçekleştirebilirken kurcalama kanıtı özellikleri de sağlayan sistem sürümüne sahip tablolardır. Güncelleştirmeler veya silmeler oluştuğunda, bir satırın önceki tüm sürümleri geçmiş tablosu olarak bilinen ikincil bir tabloda korunur. Geçmiş tablosu, table ledger (2011) tablosu şemasını yansıtmaktadır. Bir satır güncelleştirildiğinde, satırın en son sürümü muhasebe tablosunda kalırken, önceki sürümü sistem tarafından geçmiş tablosuna eklenir ve bu da uygulamaya saydam bir şekilde eklenir.

Muhasebe tablosu mimarisini gösteren diyagram.

3. 1. 1. 1. 1.

Hem güncel hem de zamana bağlı tablolar, Veritabanı Altyapısı'nın ikincil geçmiş tablolarında geçmiş satır sürümlerini yakalayan sistem sürümüne sahip tablolardır. İki teknoloji de benzersiz avantajlar sağlar. Güncel muhasebe tabloları hem geçerli hem de geçmiş veri kurcalamalarını belirgin hale gösterir. Zamana bağlı tablolar, yalnızca geçerli anda doğru olan veriler yerine herhangi bir noktada depolanan verilerin sorgusunu destekler.

Hem updatable ledger tables hem de temporal tables olan tablolar oluşturarak her iki teknolojiden de birlikte kullanabilirsiniz. Oluşturulduğunda bir muhasebe tablosu iki şekilde oluşturulabilir:

  • Azure portal'da kayıt defteri yapılandırması sırasında bu veritabanındaki gelecekteki tüm tablolarda kayıt defterini etkinleştir'i seçerek veya LEDGER = ON CREATE DATABASE (Transact-SQL) deyiminde bağımsız değişkenini belirterek yeni bir veritabanı oluştururken. Bu eylem bir kayıt defteri veritabanı oluşturur ve veritabanınız içinde gelecekteki tüm tabloların varsayılan olarak oluşturulduğundan emin olur.
  • Veritabanı üzerinde, LEDGER = ON CREATE TABLE (Transact-SQL) deyiminde bağımsız değişkenini belirterek veritabanı düzeyinde defterin etkinleştirilmemiş olduğu yeni bir tablo oluştururken.

T-SQL deyiminde bağımsız değişkenini belirttiğinizde kullanılabilen seçenekler hakkında bilgi için LEDGER bkz. CREATE TABLE (Transact-SQL).

Önemli

Bir defteri tablosu oluşturulduktan sonra, bir muhasebe tablosu olmayan bir tabloya geri döndürüle döner. Sonuç olarak, bir saldırgan bir muhasebe tablosundaki defteri özelliklerini geçici olarak kaldıramaz, değişiklikamaz ve ardından defterin işlevselliğini yeniden silemez.

Table ledger table schema

Güncelleştirilebilir bir muhasebe tablosunda, tabloda hangi işlemlerin değişiklik yaptığına ve satırların işlem tarafından güncelleştirilen işlem sırasına göre değişiklik yaptığına yönelik meta veriler içeren aşağıdaki GENERATED ALWAYS sütunlarına sahip olması gerekir. Bu veriler, verilerin zaman içinde nasıl ekli olduğunu anlama amacıyla adli amaçlarla yararlıdır.

Not

GENERATED ALWAYS CREATE TABLE (Transact-SQL) deyiminde muhasebe tablosu ve defteri geçmiş tablosu için gerekli sütunları belirtmezseniz, sistem sütunları otomatik olarak ekler ve aşağıdaki varsayılan adları kullanır. Daha fazla bilgi için, Updatable ledger table oluşturma konusunda örneklere bakın.

Varsayılan sütun adı Veri türü Açıklama
ledger_start_transaction_id bigint Satır sürümü oluşturan işlem kimliği
ledger_end_transaction_id bigint Satır sürümünü sildi işlem kimliği
ledger_start_sequence_number bigint Satır sürümü oluşturan bir işlem içindeki bir işlem dizi numarası
ledger_end_sequence_number bigint Satır sürümünü sildi bir işlem içindeki bir işlem dizi numarası

Geçmiş tablosu

Tarih tablosu, güncel bir muhasebe tablosu oluşturulduğunda otomatik olarak oluşturulur. Geçmiş tablosu, güncel kayıt defteri tablosunda yapılan güncelleştirmeler ve silmeler nedeniyle değiştirilen satırların geçmiş değerlerini yakalar. Geçmiş tablosu şeması, ilişkili olduğu sınanamayan defterin şemasını yansıtmaktadır.

1.00.000.000 2019 2019 2018 18:00 :00:00:00:00 :00:00 :00:00:00 00:00 :00:00:00:00 :00:00(10:00:00:00)11.00(10.000.000.000)00000000000000000 Sistem tarafından oluşturulan adlara sahip geçmiş tablolarına anonim geçmiş tabloları denir. Anonim geçmiş tablosu için adlandırma kuralı <schema> <updatableledgertablename> olur. <GUID>MSSQL_LedgerHistoryFor_.

Defteri görünümü

Sistem, her 10 4. 10 günlük defteri tablosu için otomatik olarak, muhasebe görünümü adlı bir görünüm üretir. Defteri görünümü, table ledger tablosuyla ilişkili geçmiş tablosu arasında bir birleşimdir. Defteri görünümü, geçmiş tablosunda geçmiş verileri bir arada kullanarak, table ledger tablosunda yapılan 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şlemi, işlem olup olmadığının yanı sıra işlem kimliğiyle birlikte hareket eden işlem DELETE kimliğiyle INSERT birliktedir. Kullanıcılar, işlemi yürütme 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 arasında ilişki olabilir.

Örneğin, bir bankacılık senaryosu için işlem geçmişini izlemek için, defteri görünümü zaman içinde çok çeşitli işlemler sağlar. Defterin görünümünü kullanarak, table ledger table ve history tablolarını bağımsız olarak görüntülemeniz veya bunu yapmak için kendi görünümlerinizi oluşturmanız gerekli değildir.

Muhasebe görünümünü kullanma örneği için bkz. Updatable ledger tablolarını oluşturma ve kullanma.

Defteri görünümünün şeması, ekleyebilirsiniz muhasebe ve geçmiş tablosunda tanımlanan sütunları yansıtmaktadır, ancak GENERATED ALWAYS sütunları, ekleyebilirsiniz muhasebe ve geçmiş tablolarının sütunlarına göre değişiklik gösterir.

Defteri görüntüleme şeması

Not

Hesap defteri görünümü sütun adları, CREATE TABLE <ledger_view_option> (Transact-SQL) deyimiyle parametresi kullanılarak tabloyu özelleştirilebilir. Daha fazla bilgi için bkz. muhasebe görünümü seçenekleri ve ilgili örnekler CREATE TABLE (Transact-SQL).

Varsayılan sütun adı Veri türü Açıklama
ledger_transaction_id bigint Satır sürümünü oluşturan veya sılan işlem kimliği.
ledger_sequence_number bigint Tablodaki işlem içindeki satır düzeyi işlemlerin sıra numarası.
ledger_operation_type_id tinyint contains 0 (INSERT) veya 1 (DELETE). Defteri tablosuna satır eklemek, bu sütunda yer alan yeni bir satırı muhasebe 0 görünümünde üretir. Kayıt defteri tablosundan bir satırı silmek, kayıt defteri görünümünde bu sütunda içeren yeni 1 bir satır üretir. Muhasebe tablosunda bir satırı güncelleştirmek, defteri görünümünde iki yeni satır üretir. Satırlardan biri 1 (DELETE) ve diğeri de bu sütunda 1 (INSERT) içerir.
ledger_operation_type_desc nvarchar(128) veya INSERT DELETE içerir. Daha fazla bilgi için önceki satıra bakın.

Sonraki adımlar