現在実行中のストアドプロシージャがあり、特定のクエリでハング/ロックしているようです。どのようにクエリを見ることができますか?好ましくは、プロセスを変更することなく。ストアドプロシージャ内で現在実行されているクエリ
DBCC Inputbuffer (65)
を使用して
は私に
言語イベント0 EXEC mySPを与えます。
敬具、 Cederlof
現在実行中のストアドプロシージャがあり、特定のクエリでハング/ロックしているようです。どのようにクエリを見ることができますか?好ましくは、プロセスを変更することなく。ストアドプロシージャ内で現在実行されているクエリ
DBCC Inputbuffer (65)
を使用して
は私に
言語イベント0 EXEC mySPを与えます。
敬具、 Cederlof
は、現在実行中のクエリの拡張情報を取得するための優れたストアドプロシージャがあります。以下からダウンロードできます: http://sqlblog.com/blogs/adam_machanic/archive/2011/04/27/who-is-active-v11-00-a-month-of-activity-monitoring-part-27-of-30.aspx
SELECT SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
((CASE WHEN r.statement_end_offset <= 0
THEN DATALENGTH(st.text)
ELSE r.statement_end_offset END -
r.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(sql_handle) st
WHERE session_id = 65
すごくうまくいくようです。 – cederlof
WHERE session_id!= <このセッションID> –
@GabrielMcAdamsの行を追加すると便利です - 質問の場合、特にセッションIDに興味があります ' (DBCC入力バッファ(65)から) –
SQLプロファイラを使用してください。その名前が示すように、SQL Serverの主要プロファイリングツールであり、プロシージャ内の各ステートメントの実行時間を表示できます。
それは私の考えでもありましたが、私に示すのはSPをトリガするために使用される "EXEC mySP"クエリだけです。または私は不正なフィルタリングを使用していますか? – cederlof
@cederlof - プロファイラで 'SP:StmtCompleted'イベントと' SP:StmtStarting'イベントを取得する必要があります。 –
ありがとう、私はそれをチェックアウトします! – cederlof