由于最近数据库的部分job总是不能十分健康的执行,而监控起来只能登陆db服务器去查看错误日志,维护起来十分麻烦,并且job一般都是比较重要的,比如备份数据库或者清理数据库等等。网站这边,经常由于清理job不能正常执行,造成数据库空间在几天内增加 2G - 3G 左右,最后排查发现,是由于执行清理的sql语句执行超时而至。所以,做了一个job执行报表的功能,集成于公司的后台,和 错误日志放在了一起,这样就能每天方便的监控了。
下面是用到的SQL 语句:
select top 150 a.run_date,a.run_time, b. name ,step_id,step_name,a.message,a.run_status,a.run_duration
|
from msdb.dbo.sysjobhistory a ,msdb.dbo.sysjobs b
|
where a.job_id=b.job_id and name not in ( 'job_exclude' ) and a.step_id>0
|
order by run_date desc
|
该功能主要用到了 msdb.dbo.sysjobhistory 和 msdb.dbo.sysjobs 两张 job 系统表
job_exclude:是一些执行十分频繁的job,可以排除掉,比如5分钟执行一次等,监控没有太大的意义
下面是功能图:
其实对于 db 的维护,可以有其他更多更好的途径,稍后会考虑用网页的方式来监控 数据库 健康信息,如磁盘占用空间等等,这样能和内部后台紧密联系,便于监控
希望能对你有所帮住,请多多点击推荐,谢谢