2016-05-02 8 views
0

Ich suche nach DMV für SQL Server 2008 R2, die mir alle Abfragen zeigt, die von einem bestimmten Benutzer ausgeführt werden.Liste der ausgeführten Abfragen

Ich habe diesen Code jetzt:

SELECT * 
FROM sys.dm_exec_query_stats qs 
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st 
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp 

aber ist es möglich, eine andere DMV zu verbinden, die mir die Ergebnisse auf Login-Namen filtern können?

+1

Try http:.. // dba.stacke xchange.com/ –

+1

Ich glaube nicht, dass SQL Server verfolgt, wer welche Abfrage ausführt. Am besten ist es wahrscheinlich, SQL Profiler auszuführen und zu verfolgen, welche Abfragen der Benutzer ausführt. – MWillemse

+1

willst du die ganze Geschichte behalten oder was läuft gerade? –

Antwort

2

Sie fragen Sie schrieb nicht geben Sie einen vollständigen Verlauf, sondern gibt Ihnen die zwischengespeicherten Ausführungspläne, die leere (in der Regel in SQL Server Neustart) erhalten können.

Wenn Sie den Überblick über alle Benutzeraktivitäten behalten möchten, haben Sie einige Optionen:

Verwenden Sie SQL Server Profiler alle die Aktivität des Benutzers speichern

Sie können SQL Server Profiler-Sitzung erstellen, verfolgen das Ereignis SQL: StmtStarting für die gewünschte Datenbank. Sie können auch Platzhalter verwenden, um nur bestimmte Abfragen zu verfolgen. Die Ergebnisse der Propling-Sitzungen können in einer Tabelle gespeichert werden. Sie können sicherstellen, dass die Profilerstellungssitzung automatisch gestartet wird, wenn der Server gestartet wird und die ganze Zeit mit dem SQL Server-Agent-Job bleibt.

Der Hauptnachteil davon ist, dass Profiler einen ernsthaften Leistungseinfluss haben.

erweiterte Ereignis Sitzung

Das Konzept der Profiler-Sitzung tatsächlich sehr ähnlich ist, außer dass Sie einen neuen Mechanismus Extended Event genannt verwenden werden.

Das entsprechende Ereignis wird sql_statement_starting, und wie der Profiler, können Sie die Daten in der Datei speichern (die abgefragt werden kann), Grenzen setzen, Filter usw.

Die Leistung des erweiterten Ereignisses sind in der Regel viel besser als der Profiler. und die Auswirkung auf die gesamte Serverleistung ist viel geringer, wenn eine erweiterte Ereignisverfolgungssitzung ausgeführt wird.

SQL Server Audit

Sie auch eine Prüfung auf SQL Server-Ebene erstellen, und dann AUDIT Spezifikation in Ihrer Datenbank (in SSMS, im Objekt-Explorer unter der database-> Security-> Datenbank erstellen Audit Spezifikationen

Sie können SELECT prüfen usw. DELETE und Sie können wählen, wo die Daten gespeichert werden (Datei/Ereignisprotokoll ...)

this helps

+0

Aber ist es möglich, Benutzer dieser abgefangenen Abfragen zu überprüfen? – PNPTestovir

+1

In jeder der Möglichkeiten, die ich erwähnt habe, erhalten Sie alle Anfragen und von welchem ​​Benutzer ausgeführt. Die zwischengespeicherten Abfragen werden zwischengespeichert und nicht auf den Benutzer verwiesen, der sie zuerst ausgeführt hat. Sie können sehen, welche Abfragen im Moment und von welchem ​​Benutzer ausgeführt werden. Dies ist jedoch nicht das, wonach Sie gefragt haben. –

Verwandte Themen