zusammenfassen - sql summe mehrere zeilen




Vorschläge zum Implementieren von Audit-Tabellen in SQL Server? (4)

Gibt es eingebaute Audit-Pakete? Oracle hat ein nettes Paket, das sogar Audit-Änderungen an einen separaten Server außerhalb des Zugangs eines Bösewichts, der die SQL modifiziert, sendet.

Ihr Beispiel ist fantastisch ... es zeigt, wie man auf jeden aufmerksam macht, der die Audit-Tabellen ändert.

Eine einfache Methode, die ich in der Vergangenheit verwendet habe, besteht im Wesentlichen darin, nur eine zweite Tabelle zu erstellen, deren Struktur diejenige widerspiegelt, die ich überwachen möchte, und dann einen Aktualisierungs- / Lösch-Trigger 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.

Die Daten in der Audit-Tabelle sind zwar effektiv, aber nicht die nützlichsten oder einfachsten Berichte. Ich frage mich, ob jemand eine bessere Methode für die Prüfung von Datenänderungen hat?

Es sollte nicht zu viele Aktualisierungen dieser Datensätze geben, aber es handelt sich um sehr sensible Informationen. Daher ist es für den Kunden wichtig, dass alle Änderungen überprüft und problemlos gemeldet werden.


Wie viel Schreiben und Lesen dieser Tabelle (n) erwarten Sie?

Ich habe eine einzelne Audit-Tabelle mit Spalten für Table, Column, OldValue, NewValue, User und ChangeDateTime verwendet - generisch genug, um mit allen anderen Änderungen in der Datenbank zu arbeiten, und während eine Menge Daten in diese Tabelle geschrieben wurden, auf diesen Daten waren spärlich genug, dass sie bei wenig genutzten Zeiten des Tages ausgeführt werden konnten.

Hinzugefügt: Wenn die Datenmenge im Vergleich zur Berichterstellung ein Problem darstellt, kann die Audit-Tabelle auf einen schreibgeschützten Datenbankserver repliziert werden, sodass Sie Berichte bei Bedarf ausführen können, ohne den Master-Server daran zu hindern, seine Arbeit zu erledigen.



Wir verwenden dafür zwei Tischdesigns.

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

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

Eine andere Option ist die Verwendung eines Drittanbieter-Tools wie ApexSQL Audit oder Change Data Capture in SQL Server.





audit