如何动态读取多个存储过程的查询执行计划



我的需求是读取多个存储过程的实际/估计执行计划,并希望将其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'..)

打开Query Store以跟踪估计的执行计划以及查询资源利用率和等待时间的运行时摘要。参见sys.query_store_plan

或者使用query_post_execution_showplan扩展事件来捕获文件的实际执行计划。

相关内容

  • 没有找到相关文章

最新更新