最近系统进行重构,有大量的存储过程无法判断是否使用,刚好找到了一下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