SQL Server - 按Proc名称获取执行计划XML

时间:2013-12-31 08:57:16

标签: sql-server ado.net sql-execution-plan

我正在开发一个.NET程序来检索给定数据库中所有存储过程的执行计划。我将在程序端解析这些XML。

SET SHOWPLAN_XML ON并执行程序给出计划。但是,问题是需要传递过程的所有参数。

有没有办法在不传递存储过程的任何参数的情况下检索执行计划,只提供程序的名称?

1 个答案:

答案 0 :(得分:1)

是的,您可能希望查看plan cache - SQL Server缓存所有执行计划,并允许您使用DMVs查看它们。例如,以下是一个基本查询,它将列出所有缓存的查询计划(作为xml)及其SQL文本。在大多数数据库中,您还需要添加其他过滤子句,将结果过滤到您感兴趣的计划中。

SELECT UseCounts, Cacheobjtype, Objtype, TEXT, query_plan
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
CROSS APPLY sys.dm_exec_query_plan(plan_handle)

请注意,这些计划仅包含估计的执行计划,不包含“实际”值(例如实际读取次数)。此外,您无法使用它来获取加密存储过程的查询计划。

另请参阅How do I obtain a Query Execution Plan?Tools for visualising execution xml plans as HTML也可能对“解析XML”部分有用。