sqlserver-查询存储过程最后执行情况

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

参考文档

posted @ 2019-07-02 15:56  莫己若  阅读(3285)  评论(0编辑  收藏  举报