Naprakész számlatáblák

A következőkre vonatkozik: Sql Server 2022 (16.x) és újabb verziók Azure SQL DatabaseFelügyelt Azure SQL-példány

A frissíthető főkönyvtáblák olyan rendszerverzióval rendelkező táblák, amelyeken a felhasználók frissítéseket és törléseket hajthatnak végre, ugyanakkor illetéktelen beavatkozás elleni védelmet is biztosítanak. Frissítések vagy törlések esetén a sor minden korábbi verziója megmarad egy másodlagos táblában, más néven az előzménytáblában. Az előzménytábla az frissíthető főkönyvtábla sémáját tükrözi. Egy sor frissítésekor a sor legújabb verziója a főkönyvtáblában marad, míg a korábbi verziót a rendszer beszúrja az előzménytáblába, transzparensen az alkalmazásba.

Mind az frissíthető főkönyvtáblák, mind az időbeli táblák rendszerverziójú táblák, amelyekhez az adatbázismotor rögzíti a másodlagos előzménytáblák előzménysorainak verzióit. Bármelyik technológia egyedi előnyöket biztosít. A frissíthető napló táblák az aktuális és az előzményadatok manipulációját is nyilvánvalóvá teszik. A temporális táblák támogatják az adott időpontban tárolt adatok lekérdezését ahelyett, hogy csak az aktuális pillanatban helyes adatokat kérdezik le. Mindkét technológiát együtt használhatja, ha olyan táblákat hoz létre, amelyek mind frissíthető főkönyvtáblák, mind időbeli táblák.

A főkönyvtábla architektúrát bemutató diagram.

Létrehozhat egy frissíthető főkönyvtáblát a LEDGER = ONCREATE DATABASE (Transact-SQL) utasítás argumentumának megadásával.

Jótanács

LEDGER = ON nem kötelező, ha frissíthető főkönyvtáblákat hoz létre egy főkönyv-adatbázisban. Alapértelmezés szerint minden tábla egy frissíthető főkönyvtábla egy főkönyv-adatbázisban.

A T-SQL-utasítás argumentumának megadásakor LEDGER elérhető lehetőségekről a CREATE TABLE (Transact-SQL) című témakörben olvashat.

Fontos

A főkönyvtáblák létrehozása után nem állítható vissza olyan táblára, amely nem főkönyvtábla. Ennek eredményeképpen a támadók nem távolíthatják el ideiglenesen a főkönyvi funkciókat a főkönyvtábláról, nem végezhetnek módosításokat, és nem engedélyezhetik újra a főkönyvi funkciót.

Naprakész főkönyvtábla sémája

Az frissíthető főkönyvtábláknak a következő GENERÁLT ALWAYS oszlopokkal kell rendelkezniük, amelyek metaadatokat tartalmaznak, amelyek tartalmazzák, hogy mely tranzakciók módosították a táblát, és hogy a műveletek sorrendje mely sorokat frissítette a tranzakció. Ezek az adatok kriminalisztikai célokra hasznosak az adatok időbeli beszúrásának megértéséhez.

Ha a GENERATED ALWAYS utasításban nem adja meg a főkönyvtábla és a könyvelési előzmények táblájának kötelező oszlopait, a rendszer automatikusan hozzáadja az oszlopokat, és az alábbi alapértelmezett neveket használja. További információkért tekintse meg az frissíthető főkönyvtáblák létrehozására vonatkozó példákat.

Alapértelmezett oszlopnév Adattípus Description
ledger_start_transaction_id bigint A sorverziót létrehozó tranzakció azonosítója
ledger_end_transaction_id (főkönyv_vég_tranzakció_azonosító) bigint Az a tranzakcióazonosító, amely törölt egy sorverziót
ledger_kezdő_sorszám bigint Egy sorverziót létrehozó tranzakción belüli művelet sorszáma
ledger_vég_sorszám bigint A tranzakción belüli művelet sorszáma, amely törölt egy sorverziót

Előzménytábla

Az előzménytábla automatikusan létrejön egy frissíthető főkönyvtábla létrehozásakor. Az előzménytábla rögzíti a frissíthető főkönyvtáblában lévő frissítések és törlések miatt módosított sorok előzményértékeit. Az előzménytábla sémája a hozzárendelt frissíthető főkönyvtábla sémáját tükrözi.

Frissíthető főkönyvtábla létrehozásakor megadhatja annak a sémának a nevét, amely tartalmazza az előzménytáblát és az előzménytábla nevét, vagy a rendszer létrehozza az előzménytábla nevét, és hozzáadja azt a főkönyvtáblával megegyező sémához. A rendszer által létrehozott névvel rendelkező előzménytáblákat névtelen előzménytábláknak nevezzük. A névtelen előzménytáblák elnevezési konvenciójának neve <schema>.<updatableledgertablename>. <GUID>MSSQL_LedgerHistoryFor_.

Főkönyv nézet

Minden frissíthető főkönyvtáblához a rendszer automatikusan létrehoz egy nézetet, az úgynevezett ledger nézetet. A főkönyv nézet az frissíthető főkönyvtábla és a hozzá tartozó előzménytáblák összekapcsolása. A főkönyvnézet jelentést készít az összes sormódosításról, amely a frissíthető főkönyvtáblán történt, azáltal hogy az előzménytáblában található előzményadatokat összekapcsolja. Ez a nézet lehetővé teszi a felhasználók, partnereik vagy auditoraik számára az összes előzményművelet elemzését és az esetleges illetéktelen módosítás észlelését. Az egyes sorműveleteket az eljáró tranzakció azonosítója kíséri, valamint azt is, hogy a művelet egy DELETE vagy egy INSERT. A felhasználók további információt kaphatnak a tranzakció végrehajtásának időpontjáról, valamint a végrehajtást végrehajtó felhasználó identitásáról, és összevethetik azokat a tranzakció által végrehajtott egyéb műveletekkel.

Ha például egy banki forgatókönyv tranzakciós előzményeit szeretné nyomon követni, a főkönyvi nézet a tranzakciók időbeli sorrendjét mutatja. A főkönyvnézet használatával nem kell függetlenül néznie a frissíthető főkönyvtáblát és az előzménytáblát, vagy saját nézetet kell létrehoznia ehhez.

Példa a főkönyvnézet használatára: Frissíthető főkönyvtáblák létrehozása és használata.

A főkönyvnézet sémája az frissíthető főkönyvben és az előzménytáblában definiált oszlopokat tükrözi, de a GENERÁLT MINDIG oszlopok eltérnek az frissíthető főkönyv és az előzménytáblák oszlopaitól.

Ledger view schema

Megjegyzés:

A főkönyvnézet oszlopnevei testre szabhatók a tábla létrehozásakor a <ledger_view_option>CREATE TABLE (Transact-SQL) utasítás paraméterével. További információkért tekintse meg a főkönyvi nézet beállításait és a CREATE TABLE (Transact-SQL) megfelelő példáit.

Alapértelmezett oszlopnév Adattípus Description
főkönyvi_tranzakció_azonosító bigint A sorverziót létrehozó vagy törölt tranzakció azonosítója.
főkönyv_sorszám bigint Egy sorszintű művelet sorszáma a tábla tranzakcióján belül.
főkönyv_művelettípus tinyint Tartalmazza 1 (INSERT) vagy 2 (DELETE). Ha egy sort beszúr a főkönyvtáblába, ez új sort eredményez a főkönyvi nézetben, amely ebben az oszlopban 1-t tartalmaz. Ha töröl egy sort a főkönyvtáblából, egy új sor jön létre a főkönyvi nézetben, amely tartalmazza a(z) 2-t ebben az oszlopban. A főkönyvi tábla egy sorának frissítése két új sort hoz létre a főkönyv nézetben. Az egyik sor ebben az oszlopban tartalmazza a 2 (DELETE), míg a másik sor tartalmazza a 1 (INSERT).
ledger_művelet_típus_leírás nvarchar(128) Tartalmazza INSERT vagy DELETE. További információkért lásd az előző sort.