3

こんにちは私は簡単な質問があります。しかし、それは別の質問につながります。実行したstorprocのクエリプランを削除したい。だから私はを使用してprocを実行しました

exec dbo.uspNameOfProc

次に、クエリを使用して計画の追跡を確認しました

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%'

他に何が欠けていますか?

4

2 に答える 2

4

RUNexec 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 * * *実行プランを変更しないように、これらの操作は別々のクエリウィンドウで実行してください。

于 2013-01-24T17:30:37.107 に答える
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');
于 2013-01-24T17:57:01.220 に答える