sql >> Databáze >  >> RDS >> Sqlserver

Vytváření aktivačních událostí auditu na serveru SQL Server

Chci jen upozornit na pár bodů:

Používejte generátory kódu Nemůžete mít jedinou proceduru pro sledování všech tabulek, budete muset vygenerovat podobné, ale odlišné spouštěče pro každou sledovanou tabulku. Tento druh úlohy je nejvhodnější pro automatizované generování kódu. Na vašem místě bych pro generování kódu z XML použil transformaci XSLT a XML lze generovat automaticky z metadat. To vám umožňuje snadno udržovat spouštěče jejich regenerací pokaždé, když provedete změnu logiky/struktury auditu nebo přidání/změny cílové tabulky.

Zvažte plánování kapacity pro audit. Auditní tabulka, která sleduje všechny změny hodnot, bude zdaleka největší tabulkou v databázi:bude obsahovat všechna aktuální data a celou historii aktuálních dat. Taková tabulka zvětší velikost databáze o 2-3 řády (x10, x100). A auditní tabulka se rychle stane úzkým hrdlem všeho:

  • každá operace DML bude vyžadovat zámky v tabulce auditu
  • všechny administrativní a údržbové operace se budou muset přizpůsobit velikosti databáze kvůli auditu

Vezměte v úvahu změny schématu . Tabulka s názvem 'Foo' může být zrušena a později může být vytvořena jiná tabulka s názvem 'Foo'. Auditní záznam musí být schopen rozlišit dva různé objekty. Je lepší použít pomalu se měnící dimenzionální přístup.

Zvažte nutnost efektivního mazání auditní záznamy. Když nastane lhůta pro uchování diktovaná zásadami předmětu vaší aplikace, musíte mít možnost vymazat záznamy auditu splatné. Teď se to nemusí zdát tak velký problém, ale o 5 let později, kdy mají být první záznamy, tabulka auditů narostla na 9,5 TB, to může být problém.

Zvažte nutnost dotázat se na audit . Struktura auditní tabulky musí být připravena tak, aby efektivně reagovala na dotazy týkající se auditu. Pokud váš audit nemůže být dotazován, pak nemá žádnou hodnotu. Dotazy budou zcela řízeny vašimi požadavky a znáte je pouze vy, ale většina záznamů auditu je dotazována pro časové intervaly („jaké změny se včera odehrály mezi 19:00 a 20:00?“), podle objektu („jaké změny nastaly v tomto záznamu v tomto tabulky?“ nebo podle autora („jaké změny provedl Bob v databázi?“).



  1. Jak mohu jasně a rychle parametrizovat nulový řetězec pomocí DBNull.Value

  2. Chybějící klíčové slovo v příkazu Oracle CASE WHEN SQL

  3. Příklady FLOOR() v SQL Server

  4. Typy tabulkových vztahů v MS Access