Das beste Tool ist 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 die Aktivität mit sp_whoisactive in einer Schleife
So erkennen Sie langsame Abfragen: So suchen Sie mit sp_WhoIsActive nach langsamen SQL Server-Abfragen
Sie können DMVs direkt verwenden, um Ihre langsamsten Abfragen zu erhalten und von dort aus zu handeln. Überprüfen Sie die Diagnoseabfragen von Glenn Berry .
Und schließlich können Sie diese Abfrage verwenden, um die zeitaufwändigsten Abfragen zu finden. Sie können mit den 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;
BEARBEITEN
Eine neue Option ist bereits seit einiger Zeit verfügbar, First Reponder Kit . Eine Reihe von Skripten, die vom BrentOzar-Team unter MIT-Lizenz kostenlos zur Verfügung gestellt werden und bei verschiedenen Aufgaben hilfreich sind, einschließlich der vom OP gestellten. Hauptsächlich sp_BlitzFirst und sp_BlitzWho Skripte für diesen Fall.