Jak skomentowano, najlepszym narzędziem jest sp_whoIsActive autorstwa Adama Machanica . Można go używać na kilka sposobów, aby zobaczyć, co działa w momencie uruchomienia skryptu, lub uruchomić go w pętli, aby monitorować określone działania, na przykład powolne zapytania.
Aby uruchomić w pętli, spójrz tutaj: Jak rejestrować aktywność za pomocą sp_whoisactive w pętli
Aby wykryć wolne zapytania: Jak używać sp_WhoIsActive do znajdowania wolnych zapytań SQL Server
Możesz bezpośrednio używać DMV do uzyskiwania najwolniejszych zapytań i działania z tego miejsca. Sprawdź zapytania diagnostyczne Glenna Berry'ego .
Na koniec możesz użyć tego zapytania, aby znaleźć najbardziej czasochłonne zapytania. Możesz bawić się parametrami dm_exec_query_stats, aby dodać więcej danych lub połączyć się z innymi, aby uzyskać więcej informacji. Pamiętaj, że dmv jest usuwany i odświeżany za każdym razem, gdy serwer jest restartowany.
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;
EDYTOWAĆ
Od pewnego czasu dostępna jest nowa opcja, First Reponder Kit . Jest zestawem skryptów, udostępnianych bezpłatnie na licencji MIT przez zespół BrentOzar, które pomogą w różnych zadaniach, w tym w tym zadanym przez OP. Głównie skrypty sp_BlitzFirst i sp_BlitzWho w tym przypadku.