プロセスID、プロセス名、ログイン時間、ユーザー、開始時間、継続時間を含む長時間実行クエリを見つけるにはどうすればよいですか


23

長期実行クエリの詳細については、誰でも私を助けることができますか?ProcessID、プロセス名、データベース、ホスト、ユーザー、プロセスログイン時間、クエリ開始時間、クエリ期間。

このデータを提供するクエリまたはSPを探しています。

回答:


38

コメントとして、最良のツールの周りにはあるsp_whoIsActiveによってアダムMachanic。いくつかの方法で使用できます。スクリプトを起動した瞬間に何が実行されているかを確認したり、ループで実行して特定のアクションを監視したりすることができます。

ループで実行するには、ループ内でsp_whoisactiveを使用してアクティビティをログに記録 する方法遅いクエリを検出するには:sp_WhoIsActiveを使用して遅いSQL Serverクエリを検索する方法

DMVを直接使用して、最も遅いクエリを取得し、そこからアクションを実行できます。Glenn Berryの診断クエリを確認してください。

最後に、このクエリを使用して、最も時間のかかるクエリを見つけることができます。あなたはで遊ぶことができますdm_exec_query_statsより多くのデータを追加したり、より多くの情報を得るために他のものと結合します。dmvは、サーバーが再起動されるたびにフラッシュされ、更新されることに注意してください。

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;

編集

新しいオプション、First Reponder Kitがすでに利用可能です。BrentOzarチームによってMITライセンスの下で自由に提供されるスクリプトのセットであり、OPからの要求を含むさまざまなタスクを支援します。この場合の主にsp_BlitzFirstおよびsp_BlitzWhoスクリプト。


10

sp_whoisactiveを強くお勧めします。これはサードパーティのSPですが、上記にリストしたものすべて、およびそれ以上のものを伝えることができます。それはあなたの武器庫に持っている素晴らしいツールです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.