Как получить значения параметров для dm_exec_sql_text - PullRequest
9 голосов
/ 24 марта 2010

Я запускаю следующую инструкцию, чтобы увидеть, какие запросы выполняются на сервере sql:

select *
from sys.dm_exec_requests r
cross apply sys.dm_exec_sql_text(r.sql_handle)
where r.database_id = DB_ID('<dbname>')

Возвращается текст SQL, который возвращается параметризованным образом:способ получить значения для параметров, которые оператор использует?Скажите, возможно, присоединившись к другому столу?

1 Ответ

6 голосов
/ 24 марта 2010

Редактировать: Remus верен, он будет отображать скомпилированные версии только при первом попадании плана запроса в кэш, а не при последующих запусках.

Вы должны быть в состоянии получить параметры из плана запроса, так как он содержит последние использованные параметры. Изменение вашего кода:

select * 
from sys.dm_exec_requests r 
cross apply sys.dm_exec_query_plan(plan_handle) as qp
cross apply sys.dm_exec_sql_text(r.sql_handle) 
where r.database_id = DB_ID('<dbname>') 

Вы найдете последний столбец плана запроса: query_plan, XML-версия плана запроса, которую вы можете проверить вручную, в нижней части XML находятся параметры, или, если вам интересно, используйте синтаксический анализ XML и XQuery вытащить теги ParameterList

...