因为各种原因数据库中存在大量无用的存储过程,想查询存储过程的最后执行情况,处理长期不使用的存储过程。
下列语句利用系统自带的视图数据表,查询存储过程的最后执行情况:
--查询数据库的信息 SELECT database_id,* FROM sys.databases WHERE database_id> 4 SELECT a.name AS 存储过程名称, a.create_date AS 创建日期, a.modify_date 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.database_id
注意:数据库版本为2008,上述语句只能查询缓存内的存储过程的最后执行时间。
建议:如果要查询所有的存储过程的最后执行时间,最好开发相关的日志表来记录。
1、间隔查询 sys.dm_exec_procedure_stats 表的数据更新日志表。
2、在存储过程中添加语句,更新日志表。