Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Audit-Trigger in SQL Server erstellen

Ich möchte nur einige Punkte hervorheben:

Verwenden Sie Codegeneratoren Sie können keine einzelne Prozedur haben, um alle Tabellen zu verfolgen, Sie müssen ähnliche, aber unterschiedliche Trigger für jede verfolgte Tabelle generieren. Diese Art von Job eignet sich am besten für die automatisierte Codegenerierung. An Ihrer Stelle würde ich eine XSLT-Transformation verwenden, um den Code aus XML zu generieren, und das XML kann automatisch aus Metadaten generiert werden. Auf diese Weise können Sie die Trigger einfach pflegen, indem Sie sie jedes Mal neu generieren, wenn Sie eine Änderung an der Prüflogik/-struktur vornehmen oder eine Zieltabelle hinzugefügt/geändert wird.

Erwägen Sie eine Kapazitätsplanung für die Prüfung. Eine Audit-Tabelle, die alle Wertänderungen verfolgt, ist bei weitem die größte Tabelle in der Datenbank:Sie enthält alle aktuellen Daten und den gesamten Verlauf der aktuellen Daten. Eine solche Tabelle erhöht die Datenbankgröße um 2-3 Größenordnungen (x10, x100). Und die Audit-Tabelle wird schnell zum Flaschenhals von allem:

  • Jede DML-Operation erfordert Sperren in der Audit-Tabelle
  • Alle Verwaltungs- und Wartungsvorgänge müssen aufgrund von Audits der Größe der Datenbank gerecht werden

Berücksichtigen Sie die Schemaänderungen . Eine Tabelle mit dem Namen „Foo“ kann gelöscht und später eine andere Tabelle mit dem Namen „Foo“ erstellt werden. Der Audit-Trail muss in der Lage sein, die beiden unterschiedlichen Objekte zu unterscheiden. Verwenden Sie besser einen langsam wechselnden Dimensionsansatz.

Berücksichtigen Sie die Notwendigkeit eines effizienten Löschens Audit-Aufzeichnungen. Wenn der Aufbewahrungszeitraum, der durch Ihre Anwendungssubjektrichtlinien vorgeschrieben ist, fällig ist, müssen Sie in der Lage sein, die fälligen Audit-Aufzeichnungen zu löschen. Es mag jetzt nicht so eine große Sache erscheinen, aber 5 Jahre später, wenn die ersten Aufzeichnungen fällig sind, ist die Audit-Tabelle auf 9,5 TB angewachsen, das könnte ein Problem werden.

Berücksichtigen Sie die Notwendigkeit, das Audit abzufragen . Die Audit-Tabellenstruktur muss so vorbereitet werden, dass sie effizient auf Audit-Anfragen reagiert. Wenn Ihr Audit nicht abgefragt werden kann, hat es keinen Wert. Die Abfragen werden vollständig von Ihren Anforderungen gesteuert, und nur Sie kennen diese, aber die meisten Audit-Aufzeichnungen werden nach Zeitintervallen ('Welche Änderungen sind gestern zwischen 19:00 und 20:00 Uhr aufgetreten?'), Nach Objekten ('Welche Änderungen sind an diesem Datensatz in diesem Tabelle?') oder nach Autor ('Welche Änderungen hat Bob in der Datenbank vorgenommen?').