Ich habe es mit einigen sensiblen Accounting-Tabellen zu tun und möchte jede SELECT
-Anweisung, die in der Tabelle ausgeführt wird, oder alle damit verbundenen Ansichten überprüfen.
Ich habe keine DDL-Ereignisse auf BOL (Books Online) gefunden, an denen etwas dran war mach mit SELECT
statement.
Und DML-Trigger sind nur für INSERT
, UPDATE
und DELETE
.
Ist es möglich, zu protokollieren, wer auf die Tabelle und die Views über SELECT
statement zugreift?
Sie haben 3 Optionen:
Ich würde für die Optionen 1 oder 2 gehen, weil sie Teil Ihrer Anwendung und eigenständig sind.
Dies hört sich zwar etwas zu spät an, um mit der Protokollierung zu beginnen: Der Zugriff auf die Tabelle sollte zuvor eingeschränkt worden sein.
Jede Lösung schlägt fehl, wenn Endbenutzer nicht direkt korrigieren (z. B. über einen Webserver oder ein Dienstkonto). Es sei denn, Sie verwenden gespeicherte Prozeduren, um den Endbenutzernamen zu senden ...
Beispiel ansehen:
%Vor%Ja, dies ist möglich, indem Sie eine Ereignisbenachrichtigung für AUDIT_DATABASE_OBJECT_ACCESS_EVENT Ereignis. Die Kosten für so etwas wären jedoch überwältigend.
Es ist viel besser, die Überwachungsinfrastruktur zu verwenden oder einen benutzerdefinierten Zugriffs-Wrapper als gbn zu verwenden empfiehlt.
Ich habe gerade etwas Code für dich hinzugefügt. Der Code erstellt eine Serverüberwachung, eine Datenbankprüfung für ausgewählte Aktivitäten und schließlich wird die Datei sys.fn_get_audit_file zum Abrufen der Informationen aus der Datei verwendet. Sie müssen das für jeden Tisch individuell machen. Wenn Sie eine automatisierte Abfrage wünschen, können Sie andere Tools wie Apex SQL Audit oder ein anderes Drittanbieter-Tool Ihrer Wahl verwenden.
SQL Server 2008-Überwachung kann in der Lage sein, sie zu erfassen. Ansonsten ist Profiler / Tracing die einzige Sache in SQL Server, die es tun kann.
Tags und Links triggers sql-server sql-server-2005 tsql ddl