Как получить значения параметров для DM exec sql text
Я запускаю следующую инструкцию, чтобы узнать, какие запросы выполняются в sql server:
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, который возвращается, параметризован:
(@Parm0 int) select * from foo where foo_id = @Parm0
есть ли способ получить значения параметров, которые оператор использует? Скажем, присоединившись к другому столу?
1 ответов
Edit: 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