Frage

Eine einfache Methode, die ich in der Vergangenheit verwendet habe, besteht im Wesentlichen darin, einfach eine zweite Tabelle zu erstellen, deren Struktur diejenige widerspiegelt, die ich prüfen möchte, und dann einen Aktualisierungs-/Löschtrigger für die Haupttabelle zu erstellen.Bevor ein Datensatz aktualisiert/gelöscht wird, wird der aktuelle Status über den Trigger in der Audit-Tabelle gespeichert.

Obwohl sie effektiv sind, sind die Daten in der Prüftabelle nicht besonders nützlich oder einfach zu dokumentieren.Ich frage mich, ob jemand eine bessere Methode zur Prüfung von Datenänderungen hat?

Es sollten nicht zu viele Aktualisierungen dieser Aufzeichnungen erfolgen, da es sich jedoch um hochsensible Informationen handelt, ist es für den Kunden wichtig, dass alle Änderungen überprüft werden und eine einfache Berichterstattung möglich ist.

War es hilfreich?

Lösung

Wie viel Schreiben vs.Erwarten Sie, diese Tabelle(n) zu lesen?

Ich habe eine einzelne Prüftabelle mit Spalten für Tabelle, Spalte, Alter Wert, Neuer Wert, Benutzer und ChangeDateTime verwendet – generisch genug, um mit allen anderen Änderungen in der Datenbank zu arbeiten, und obwohl eine Menge Daten in diese Tabelle geschrieben wurden, werden Berichte erstellt Die darauf basierenden Daten waren so spärlich, dass sie zu Tageszeiten mit geringer Nutzung ausgeführt werden konnten.

Hinzugefügt:Wenn die Datenmenge vs.Wenn die Berichterstellung ein Problem darstellt, könnte die Audit-Tabelle auf einen schreibgeschützten Datenbankserver repliziert werden, sodass Sie bei Bedarf Berichte ausführen können, ohne den Master-Server bei seiner Arbeit zu behindern.

Andere Tipps

Wir verwenden hierfür zwei Tischdesigns.

Eine Tabelle enthält Daten zur Transaktion (Datenbank, Tabellenname, Schema, Spalte, Anwendung, die die Transaktion ausgelöst hat, Hostname für die Anmeldung, der die Transaktion gestartet hat, Datum, Anzahl der betroffenen Zeilen und einige mehr).

Die zweite Tabelle wird nur zum Speichern von Datenänderungen verwendet, damit wir Änderungen bei Bedarf rückgängig machen und über alte/neue Werte berichten können.

Eine andere Möglichkeit besteht darin, hierfür ein Tool eines Drittanbieters zu verwenden, z ApexSQL-Prüfung oder Datenerfassungsfunktion in SQL Server ändern.

Ich fand diese beiden Links nützlich:

Verwendung von CLR und einer einzelnen Prüftabelle.
Erstellen eines generischen Audit-Triggers mit SQL 2005 CLR

Verwendung von Triggern und separaten Prüftabellen für jede geprüfte Tabelle.
Wie überprüfe ich Änderungen an SQL Server-Daten?

Gibt es integrierte Prüfpakete?Oracle hat ein nettes Paket, das sogar Audit-Änderungen an einen separaten Server sendet, auf den kein Angreifer zugreifen kann, der die SQL ändert.

Ihr Beispiel ist großartig...Es zeigt, wie man jeden benachrichtigt, der die Audit-Tabellen ändert.

OmniAudit könnte eine gute Lösung für Ihren Bedarf sein.Ich habe es noch nie verwendet, weil ich ziemlich gerne meine eigenen Prüfroutinen schreibe, aber es hört sich gut an.

Ich verwende den von Greg in seinem Buch beschriebenen Ansatz Antwort und füllen Sie die Prüftabelle mit einer gespeicherten Prozedur, die von den Tabellentriggern aufgerufen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top