ストアドプロシージャの実行中に、ストアドプロシージャに渡されたパラメーターの値を取得する方法はありますか? (アクティブに実行されているストアドプロシージャをデバッグしようとしています。)
Sys.dm_exec_requestsおよびsys.dm_exec_sql_text DMVを使用して現在実行されているストアドプロシージャのクエリを確認できますが、使用されているパラメーターの値は表示されません。
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+の場合、インフラストラクチャはデフォルトで有効になっているため、上記はそのまま機能します。
ストアドプロシージャのすべてのパラメータとは限りませんが、実行プランで使用されるパラメータのみが含まれるためです。