SSRS报告呈现的查询计划在哪里

时间:2013-01-24 17:12:20

标签: sql-server sql-server-2008 tsql stored-procedures sql-execution-plan

嗨,我有一个简单的问题。但它引出了另一个问题。我想删除stor proc i ran的查询计划。所以我使用

运行了proc
exec dbo.uspNameOfProc

然后使用查询检查计划chace

SELECT [text], cp.size_in_bytes, plan_handle
FROM sys.dm_exec_cached_plans AS cp CROSS APPLY 
     sys.dm_exec_sql_text(plan_handle)
where [text] like '%uspNameOfProc%'

我还缺少什么?

2 个答案:

答案 0 :(得分:4)

运行exec dbo.uspNameOfProc然后运行sp_who3找出它正在运行的spid。

Then run USE master;
GO
SELECT * FROM sys.dm_exec_requests
WHERE session_id = YourSPID;
GO

这将为您提供计划处理。要查看执行计划,请执行。

USE master;
GO
SELECT * FROM sys.dm_exec_query_plan (YourPlanHandleID);
GO

然后,如果您希望从缓存中清除计划,请使用此功能。

DBCC FREEPROCCACHE (YourPlanHandleID);
GO

希望有所帮助。 UPDATE * * * 确保在单独的查询窗口上执行这些操作,以免改变执行计划。

答案 1 :(得分:2)

获取计划句柄(因为您正在使用存储过程)的一种稍微简单的方法是来自sys.dm_exec_procedure_stats。像(来自你的数据库):

select plan_handle
from sys.dm_exec_procedure_stats
where database_id = db_id()
   and object_id = object_id('dbo.uspNameOfProc');