Jak znaleźć długo działające zapytanie z identyfikatorem procesu, nazwą procesu, czasem logowania, użytkownikiem, czasem rozpoczęcia i czasem trwania?

23

Czy ktoś może mi pomóc znaleźć poniżej podane dane dotyczące długiego zapytania. ProcessID, nazwa procesu, baza danych, host, użytkownik, czas logowania do procesu, czas rozpoczęcia i czas trwania zapytania.

Szukam zapytania lub SP, który daje mi te dane.

użytkownik3598321
źródło

Odpowiedzi:

38

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.

Jarosław
źródło
10

Gorąco polecam sp_whoisactive . Jest to SP innej firmy, ale może ci powiedzieć wszystko, co wymieniłeś powyżej, i wiele więcej. To niesamowite narzędzie, które można mieć w swoim arsenale.

Bob Pusateri
źródło