因为各种原因数据库中存在大量无用的存储过程,想查询存储过程的最后执行情况,处理长期不使用的存储过程。
下列语句利用系统自带的视图数据表,查询存储过程的最后执行情况:
--查询数据库的信息
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、在存储过程中添加语句,更新日志表。