Sugestii pentru implementarea tabelelor de audit în SQL Server?

O metodă simplă pe care am folosit-o în trecut este de fapt doar crearea unui al doilea tabel a cărui structură oglindește pe cea pe care vreau să o aud, și apoi să creez un trigger de actualizare / ștergere pe masa principală. Înainte de actualizarea / ștergerea unei înregistrări, starea curentă este salvată în tabela de audit prin declanșator.

Deși sunt eficiente, datele din tabelul de audit nu sunt cele mai utile sau ușor de raportat. Mă întreb dacă cineva are o metodă mai bună pentru a controla modificările de date?

Nu ar trebui să existe prea multe actualizări ale acestor înregistrări, dar este o informație extrem de sensibilă, deci este important pentru client ca toate modificările să fie auditate și ușor de raportat.

0
adăugat editat
Vizualizări: 4
Ar trebui să subliniez că această caracteristică este disponibilă numai în ediția Enterprise.
adăugat autor user17060, sursa
SQL Server 2008 are un suport încorporat cu noua caracteristică Change Data Capture << msdn.microsoft.com/en-us/library/bb522489.aspx> "rel =" nofollow noreferrer "> msdn .microsoft.com / en-ne / bibliotecă / bb522489.aspx & gt ;
adăugat autor andyp, sursa
Funcția Change Data Capture (Captură de schimbare a datelor) pare, de asemenea, mai multă pentru a asigura că obiectele aplicațiilor sunt păstrate în conformitate cu baza de date, mai degrabă decât o soluție de audit. (Se stochează doar modificări de 2 zile, de exemplu.) Încă trebuie să faceți sondaj pentru modificări și să le scrieți la o masă, astfel încât să creați și să utilizați declanșatori pentru a scrie într-un tabel de audit central, după cum urmează. Oh, și adresa URL de mai sus este ruptă, utilizați
adăugat autor BJury, sursa

6 răspunsuri

Există pachete de audit integrate? Oracle are un pachet frumos, care va trimite chiar modificări de audit pe un server separat în afara accesului oricărui tip rău care modifică SQL.

Exemplul lor este minunat ... arată cum să alertezi pe cineva care modifică tabelele de audit.

0
adăugat

OmniAudit might be a good solution for you need. I've never used it before because I'm quite happy writing my own audit routines, but it sounds good.

0
adăugat

Folosesc abordarea descrisă de Greg în răspunsul și să populeze tabelul de audit cu o procedură stocată numită de la declanșatoarele de tabelă.

0
adăugat

Cât de mult scrieți sau citiți acest tabel (e) vă așteptați?

Am folosit un tabel de audit unic, cu coloane pentru tabel, coloană, vecheValue, NewValue, utilizator și ChangeDateTime - destul de generic pentru a lucra cu orice alte modificări în DB, iar în timp ce o mulțime de date au fost scrise în tabel, rapoartele pe baza acestor date erau destul de rare ca să poată fi executate pe perioade de utilizare reduse ale zilei.

Added: If the amount of data vs. reporting is a concern, the audit table could be replicated to a read-only database server, allowing you to run reports whenever necessary without bogging down the master server from doing their work.

0
adăugat

Am găsit aceste două linkuri utile:

Using CLR and single audit table.
Creating a generic audit trigger with SQL 2005 CLR

Using triggers and separate audit table for each table being audited.
How do I audit changes to SQL Server data?

0
adăugat

Folosim două modele pentru acest lucru.

Un tabel conține date despre tranzacție (baza de date, numele tabelului, schema, coloana, aplicația care a declanșat tranzacția, numele gazdei pentru conectare care a început tranzacția, data, numărul de rânduri afectate și cuplul mai mult).

Al doilea tabel este utilizat numai pentru a stoca modificările datelor, astfel încât să putem anula modificările dacă este necesar și să raportăm valori vechi / noi.

O altă opțiune este utilizarea unui instrument terț pentru acest lucru, cum ar fi caracteristica Audit ApexSQL sau funcția Schimbare date de captare în SQL Server.

0
adăugat