【发布时间】:2021-12-13 17:48:12
【问题描述】:
我的要求是读取多个存储过程的实际/估计执行计划,并希望将其 XML 保存到表中以供进一步分析。
CREATE TABLE SPPlans
(
SPNAME VARCHAR(100),
QUERYPLAN XML
)
我正在寻找一些可以为表中给出的每个 SP 提供实际或估计查询执行计划的查询。我尝试了类似下面的方法,但它没有为每个 SP 提供查询计划。你能在这里提出一些建议吗?
SELECT
qp.query_plan,
OBJECT_NAME(QP.objectid) as [Procedure]
FROM sys.dm_exec_cached_plans AS CP
CROSS APPLY sys.dm_exec_sql_text( plan_handle)AS SQLText
CROSS APPLY sys.dm_exec_query_plan( plan_handle)AS QP
join sys.objects as so on so.[object_id]=QP.objectid
WHERE objtype = 'Proc' AND OBJECT_NAME(QP.objectid) in ('Proc1','Proc2'..)
【问题讨论】:
-
它只会用于实际执行的过程。除非您在运行查询时使用
SET STATISTICS XML ON,否则无法获得实际计划。CROSS APPLY sys.dm_exec_sql_text( plan_handle)AS SQLText在这里似乎是多余的
标签: sql-server ssms sql-execution-plan