Sdílet prostřednictvím


Tabulky účetní knihy pouze pro přidávání

Platí pro: SQL Server 2022 (16.x) a novější verze Azure SQL DatabaseAzure SQL Managed Instance

Tabulky registru jen pro připojení umožňují provádět pouze INSERT operace s tabulkami, které zajišťují, aby privilegovaní uživatelé, jako jsou správci databáze, nemohli měnit data prostřednictvím tradičních operací jazyka pro manipulaci s daty . Tabulky registru jen pro připojení jsou ideální pro systémy, které neaktualizují nebo odstraňují záznamy, jako jsou systémy událostí zabezpečení a systémy pro správu nebo blockchainové systémy, kde je potřeba replikovat data z blockchainu do databáze. Vzhledem k tomu, že tabulka typu append-only neobsahuje žádné UPDATE operace nebo DELETE operace, není nutné, aby odpovídající tabulka historie byla k dispozici s aktualizovatelnými tabulkami registru.

Diagram znázorňující architekturu tabulek registru

Tabulku registru jen pro připojení můžete vytvořit zadáním argumentu LEDGER = ON v příkazu CREATE TABLE (Transact-SQL) a zadáním APPEND_ONLY = ON možnosti.

Důležité

Jakmile se tabulka vytvoří jako tabulka registru, nedá se vrátit k tabulce, která nemá funkce registru. V důsledku toho útočník nemůže dočasně odebrat možnosti registru, provést změny v tabulce a pak znovu použít funkci registru.

Schéma tabulky pouze pro přidávání záznamů

Tabulka pouze pro přidávání musí obsahovat následující sloupce GENERATED ALWAYS, které obsahují metadata, kterých transakce provedly změny v tabulce a pořadí operací, jimiž transakce aktualizovala řádky. Když vytvoříte ledgerovou tabulku pouze pro připojení, ve vaší tabulce registru se vytvoří sloupce GENERATED ALWAYS. Tato data jsou užitečná pro forenzní účely při pochopení toho, jak byla data vložena v průběhu času.

Pokud v příkazu GENERATED ALWAYS nezadáte definice sloupců, systém je automaticky přidá pomocí následujících výchozích názvů.

Výchozí název sloupce Datový typ Description
ledger_start_transaction_id bigint ID transakce, která vytvořila verzi řádku
pořadové číslo počátku účetní knihy (ledger_start_sequence_number) bigint Pořadové číslo operace, která v rámci transakce vytvořila verzi řádku.

Zobrazení hlavní knihy

Pro každou tabulku knihy záznamů, která se pouze připojuje, systém automaticky vygeneruje zobrazení, které se nazývá zobrazení knihy záznamů. Zobrazení registru hlásí všechny vložené řádky, ke kterým došlo v tabulce. Zobrazení registru je primárně užitečné pro aktualizovatelné tabulky registru, nikoli pro tabulky registru pouze s příponami, protože tabulky registru pouze s příponami nemají žádné UPDATE ani DELETE možnosti. Zobrazení registru pro tabulky registru jen pro připojení je k dispozici pro konzistenci mezi aktualizovatelnými i přidávanými tabulkami registru.

Schéma zobrazení registru

Poznámka:

Názvy sloupců zobrazení registru lze přizpůsobit při vytváření tabulky pomocí <ledger_view_option> parametru s příkazem CREATE TABLE (Transact-SQL). Další informace naleznete v tématu možnosti zobrazení registru a odpovídající příklady v CREATE TABLE (Transact-SQL).

Výchozí název sloupce Datový typ Description
ledger_transaction_id bigint ID transakce, která vytvořila nebo odstranila verzi řádky.
číslo posloupnosti hlavní knihy bigint Pořadové číslo operace na úrovni řádku v rámci transakce v tabulce.
typ_operace_v_knihách tinyint Obsahuje 1 (INSERT) nebo 2 (DELETE). Vložení řádku do tabulky účetní knihy vytvoří nový řádek v zobrazení účetní knihy, který obsahuje 1 v tomto sloupci. Odstranění řádku z tabulky registru vytvoří nový řádek v zobrazení registru, který obsahuje v tomto sloupci 2. Aktualizace řádku v tabulce registru vytvoří v zobrazení registru dva nové řádky. Jeden řádek obsahuje 2 (DELETE) a druhý řádek obsahuje 1 (INSERT) v tomto sloupci. Příkaz DELETE by neměl být proveden v tabulce účetní knihy pouze pro připojování.
popis_typu_operace_v_knize nvarchar(128) Obsahuje INSERT nebo DELETE. Další informace najdete v předchozím řádku.