最近系統進行重構,有大量的存儲過程無法判斷是否使用,剛好找到了一下sql,可以起到輔助作用,注意只是輔助作用,看下面解釋
sys.dm_exec_procedure_stats,返回緩存存儲過程的聚合性能統計信息。 該視圖為每個緩存的存儲過程計划都返回一行,行的生存期與存儲過程保持緩存狀態的時間一樣長。 在從緩存中刪除存儲過程時,也將從該視圖中刪除對應行。所以他只是代表緩存中的執行情況,並不能說明歷史以來的情況,不過我覺得影響不到,如果沒有緩存,豈不是代表最近從來沒有使用過?
# 第一步
SELECT database_id, *
FROM sys.databases
WHERE database_id > 4;
#第二步
SELECT a.name AS 存儲過程名稱,
a.create_date AS 創建日期,
a.modify_date AS 修改日期,
b.cached_time AS 緩存時間,
b.last_execution_time AS 最后執行日期,
b.execution_count AS 執行次數
FROM sys.procedures a
LEFT JOIN sys.dm_exec_procedure_stats b ON a.object_id = b.object_id AND b.database_id = '替換第一步獲取到的id'
WHERE a.is_ms_shipped = 0
ORDER BY b.execution_count desc