web-dev-qa-db-ja.com

実行中のストアドプロシージャのパラメーター値を取得する方法

ストアドプロシージャの実行中に、ストアドプロシージャに渡されたパラメーターの値を取得する方法はありますか? (アクティブに実行されているストアドプロシージャをデバッグしようとしています。)

Sys.dm_exec_requestsおよびsys.dm_exec_sql_text DMVを使用して現在実行されているストアドプロシージャのクエリを確認できますが、使用されているパラメーターの値は表示されません。

12
J.D.

SQL Server 2016の場合、事前にトレースプロファイリングインフラストラクチャを有効にして、トレースフラグ7412または拡張イベントセッションキャプチャquery_thread_profile(そして 少なくともSQL Server 2016 SP1 であるが)使用できる

WITH XMLNAMESPACES
   (DEFAULT 'http://schemas.Microsoft.com/sqlserver/2004/07/showplan')
select query_plan.query('//ParameterList')
from sys.dm_exec_query_statistics_xml(@session_id)

実行中のステートメントの実行プランからParameterRuntimeValueおよびParameterCompiledValueを確認します。

SQL Server 2019+の場合、インフラストラクチャはデフォルトで有効になっているため、上記はそのまま機能します。

ストアドプロシージャのすべてのパラメータとは限りませんが、実行プランで使用されるパラメータのみが含まれるためです。

14
Martin Smith