Wie auch immer, um einen SQL Server DDL-Trigger für "SELECT" -Anweisungen zu erstellen?

8

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?

    
Sung 04.10.2009, 04:35
quelle

6 Antworten

9

Sie haben 3 Optionen:

  • erlauben den Zugriff über gespeicherte Prozeduren, wenn Sie protokollieren (und Tabellenrechte entfernen möchten)
  • Verbergen Sie die Tabelle hinter einer Ansicht, wenn Sie den direkten Zugriff einschränken und beibehalten möchten
  • Führen Sie eine permanente Ablaufverfolgung
  • aus

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%     
gbn 04.10.2009, 07:12
quelle
10

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.

    
Remus Rusanu 04.10.2009 18:47
quelle
2
%Vor%

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.

    
Daniel Calbimonte 29.01.2015 22:51
quelle
1

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.

    
RBarryYoung 04.10.2009 05:03
quelle
0
%Vor%     
Gregory Hart 14.08.2015 20:27
quelle