Sql-Server

如何獲取正在執行的儲存過程的參數值?

  • November 18, 2019

有沒有辦法在儲存過程正在執行時獲取傳遞給儲存過程的參數的值?(我正在嘗試調試一個正在執行的儲存過程。)

我知道我可以看到目前正在使用 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)

ParameterRuntimeValueParameterCompiledValue從正在執行的語句的執行計劃中查看and。

對於 SQL Server 2019+,基礎架構預設啟用,因此上述內容將正常工作。

這可能不是儲存過程的所有參數,但是因為它只包括執行計劃使用的參數。

引用自:https://dba.stackexchange.com/questions/253555