it-swarm.com.de

Wie finde ich eine lange laufende Abfrage mit Prozess-ID, Prozessname, Anmeldezeit, Benutzer, Startzeit und Dauer?

Kann mir jemand helfen, die unten angegebenen Details für lang laufende Abfragen zu finden. Prozess-ID, Prozessname, Datenbank, Host, Benutzer, Prozessanmeldezeit, Startzeit der Abfrage und Abfragedauer.

Ich suche eine Abfrage oder ein SP, das mir diese Daten gibt.

24
user3598321

Wie bereits erwähnt, ist das beste Tool sp_whoIsActive von Adam Machanic . Es kann auf verschiedene Arten verwendet werden, um zu sehen, was zum Zeitpunkt des Starts des Skripts ausgeführt wird, oder Sie können es in Schleifen ausführen, um bestimmte Aktionen zu überwachen, z. B. langsame Abfragen.

Informationen zum Ausführen in einer Schleife finden Sie hier: So protokollieren Sie Aktivitäten mit sp_whoisactive in einer Schleife So erkennen Sie langsame Abfragen: So verwenden Sie sp_WhoIsActive zum Suchen langsamer SQL Server-Abfragen

Sie können DMVs direkt verwenden, um Ihre langsamsten Anfragen zu erhalten und von dort aus zu handeln. Überprüfen Sie Glenn Berrys Diagnoseabfragen .

Und schließlich können Sie diese Abfrage verwenden, um die zeitaufwändigsten Abfragen zu finden. Sie können mit dm_exec_query_stats herumspielen, um weitere Daten hinzuzufügen, oder sich mit anderen verbinden, um weitere Informationen zu erhalten. Beachten Sie, dass dmvs bei jedem Neustart des Servers gelöscht und aktualisiert werden.

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;

[~ # ~] edit [~ # ~]

Eine neue Option ist bereits seit einiger Zeit verfügbar: First Reponder Kit . Ist eine Reihe von Skripten, die vom BrentOzar-Team unter MIT-Lizenz frei zur Verfügung gestellt werden und bei verschiedenen Aufgaben helfen, einschließlich der vom OP angeforderten. Hauptsächlich sp_BlitzFirst und sp_BlitzWho Skripte für diesen Fall.

40
Yaroslav

Ich kann sp_whoisactive nur empfehlen. Es ist ein SP eines Drittanbieters, kann Ihnen aber alles erzählen, was Sie oben aufgeführt haben, und noch viel mehr. Es ist ein unglaubliches Werkzeug in Ihrem Arsenal.

10
Bob Pusateri