2016-12-07 37 views

回答

0

系統存儲過程的執行計劃存儲在與正常存儲過程相同的位置。您可以使用類似訪問它們:

USE Master; 
SELECT c.plan_handle, q.query_plan 
FROM sys.dm_exec_cached_plans AS c 
CROSS APPLY sys.dm_exec_query_plan(c.plan_handle) AS q 
WHERE q.objectid = OBJECT_ID(N'dbo.sp_who'); 

我懷疑你可能實際上是在定義後,因爲需要這些令我有點古怪的執行計劃,因爲需要執行計劃的主要原因是性能調整。因此,假如你是過程定義後,您可以用得到:

USE Master; 
SELECT [definition] 
FROM sys.system_sql_modules 
WHERE object_id = OBJECT_ID(N'dbo.sp_who'); 

或SQL Server Management Studio中,你可以找到Databases > Programability > Stored Procedures > System Stored Procedures規定的程序,然後右鍵單擊並選擇修改:

enter image description here

+0

嗨GarethD,謝謝你的回覆。我的例子很好理解。因此,Sqlserver默認(內置)存儲過程也在計劃緩存中有計劃嗎?請指導我 –

+0

我的答案中的第一個查詢將爲您提供緩存中的查詢計劃。 – GarethD

+0

謝謝。得到它了。 –

相關問題