Sdílet prostřednictvím


Aktualizovatelné tabulky registru

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

Aktualizovatelné tabulky registru jsou tabulky se systémovou verzí, na kterých můžou uživatelé provádět aktualizace a odstraňování a zároveň poskytují funkce pro manipulaci s důkazy. Když dojde k aktualizacím nebo odstranění, zachovají se všechny starší verze řádku v sekundární tabulce, označované jako tabulka historie. Tabulka historie zrcadlí schéma aktualizovatelné tabulky registru. Při aktualizaci řádku zůstane nejnovější verze řádku v tabulce registru, zatímco její starší verze se vloží do tabulky historie systémem transparentně do aplikace.

Aktualizovatelné tabulky registru i dočasné tabulky jsou tabulky se systémovou verzí, pro které databázový stroj zachycuje historické verze řádků v sekundárních tabulkách historie. Obě technologie poskytují jedinečné výhody. Aktualizovatelné tabulky registru zviditelní aktuální i historická data. Dočasné tabulky podporují dotazování na data uložená v libovolném časovém okamžiku místo pouze dat, která jsou v aktuálním okamžiku v čase správná. Obě technologie můžete použít společně vytvořením tabulek, které jsou aktualizovatelnými tabulkami registru i dočasnými tabulkami.

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

Aktualizovatelnou tabulku registru můžete vytvořit zadáním argumentu LEDGER = ON v příkazu CREATE DATABASE (Transact-SQL).

Návod

LEDGER = ON je volitelný při vytváření aktualizovatelných tabulek registru v databázi registru. Ve výchozím nastavení je každá tabulka aktualizovatelnou tabulkou registru v databázi registru.

Informace o možnostech dostupných při zadávání argumentu LEDGER v příkazu T-SQL naleznete v tématu CREATE TABLE (Transact-SQL).

Důležité

Po vytvoření tabulky registru se nedá vrátit k tabulce, která není tabulkou registru. V důsledku toho útočník nemůže dočasně odebrat možnosti registru v tabulce registru, provádět změny a pak znovu zapnout funkce registru.

Aktualizovatelné schéma tabulky registru

Aktualizovatelná tabulka registru musí obsahovat následující sloupce GENERATED ALWAYS , které obsahují metadata, které transakce provedly změny v tabulce a pořadí operací, podle kterých byly řádky aktualizovány transakcí. 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 požadované sloupce tabulky registru a tabulky historie registru, systém automaticky přidá sloupce a použije následující výchozí názvy. Další informace najdete v příkladech vytvoření aktualizovatelné tabulky registru.

Výchozí název sloupce Datový typ Description
ledger_start_transaction_id bigint ID transakce, která vytvořila verzi řádku
identifikátor_konce_transakce_účetní_knihy bigint ID transakce, která smazala 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.
sekvenční_číslo_na_konci_účetní_knihy bigint Pořadové číslo operace v rámci transakce, která odstranila verzi řádku

Tabulka historie

Tabulka historie se automaticky vytvoří při vytvoření aktualizovatelné tabulky registru. Tabulka historie zachycuje historické hodnoty řádků, které se změnily kvůli aktualizacím a odstranění v aktualizovatelné tabulce registru. Schéma historické tabulky odráží schéma aktualizovatelné tabulky hlavní knihy, s níž je spojena.

Když vytvoříte aktualizovatelnou tabulku registru, můžete buď zadat název schématu, který bude obsahovat tabulku historie, a název tabulky historie, nebo máte systém vygenerovaný název tabulky historie a přidat ho do stejného schématu jako tabulka registru. Tabulky historie se systémem generovanými názvy se nazývají anonymní tabulky historie. Zásady vytváření názvů pro tabulku anonymní historie jsou <schema>.<updatableledgertablename>. <GUID>MSSQL_LedgerHistoryFor_.

Zobrazení hlavní knihy

Pro každou aktualizovatelnou tabulku registru systém automaticky vygeneruje zobrazení označované jako zobrazení registru. Zobrazení účetní knihy je spojením aktualizovatelné tabulky registru a přidružené tabulky historie. Zobrazení registru hlásí všechny úpravy řádků, ke kterým došlo v aktualizovatelné tabulce registru, spojením historických dat v tabulce historie. Toto zobrazení umožňuje uživatelům, jejich partnerům nebo auditorům analyzovat všechny historické operace a zjišťovat potenciální manipulaci. Každá operace řádku je doprovázena ID odpovídající transakce spolu s tím, zda operace byla typu DELETE nebo typu INSERT. Uživatelé mohou načíst další informace o době, kdy byla transakce provedena, a identitu uživatele, který ji spustil, a korelovat s jinými operacemi prováděnými touto transakcí.

Pokud například chcete sledovat historii transakcí pro bankovní scénář, zobrazení registru poskytuje kroniku transakcí v průběhu času. Pomocí zobrazení hlavní knihy nemusíte nezávisle zobrazit aktualizovatelné tabulky registru a tabulky historie nebo vytvořit vlastní zobrazení, abyste to mohli udělat.

Příklad použití zobrazení registru naleznete v tématu Vytvoření a použití aktualizovatelných tabulek registru.

Schéma zobrazení registru zrcadlí sloupce definované v aktualizovatelné registru a tabulce historie, ale sloupce GENERATED ALWAYS se liší od sloupců aktualizovatelných registrů a historie.

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.
popis_typu_operace_v_knize nvarchar(128) Obsahuje INSERT nebo DELETE. Další informace najdete v předchozím řádku.