在2000或者05以上的版本里面都可以建job(作业);我是在里面建了很大的报表系统,而现在是想对这整个系统做一个监控,监控每一个步骤的执行情况,是否成功,失败的话有是什么原因造成的;然后把监控的结果以邮件的形式发送。
目前的问题是我想知道怎样去抓取每一个JOB执行完成后的结果,好像是有一个存储过程可以抓取;请各位高手大侠教一下我,并告诉我具体用法。(也可以用其他方法,只要能抓取到我想要的东西就行) 比如我想把抓取到的结果放到一个表里面;如下:
日期 作业ID 执行结果 报错原因 。。
2011-01-10 1 成功 NULL
2011-01-10 2 失败 。。。。。。
虔诚的请高手指点
------解决方案--------------------
这个,估计得写软件来实现,帮顶了.
------解决方案--------------------
查了一下,可以利用这个系统视图,整理你的需求
- SQL code
select * from msdb..sysjobserversjob_id uniqueidentifier 作业标识号。 server_id int 服务器标识号。 last_run_outcome tinyint 作业上次运行的结果:0 = 失败1 = 成功3 = 取消 last_outcome_ message nvarchar(1024) 与 last_run_outcome 列关联的消息(如果有)。 last_run_date int 上次运行作业的日期。 last_run_time int 上次运行作业的时间。 last_run_duration int 作业运行的持续时间,以秒为单位。
------解决方案--------------------
- SQL code
DBMAIL就可以实现,当JOB失败时,用DBMAIL向操作员发一份邮件。
------解决方案--------------------
其实最好的办法是在你作业里加一条语句,执行成功后向你的日志表插一条记录
以后直接查你的日志表就可以了
------解决方案--------------------
- SQL code
之前得先建个表create table 日志表(id int identity(1,1),jobID int, -- jobidjobName varchar(20),-- job名称Result varchar(20), -- 运行结果Runtime datetime, -- 运行时间bz varchar(100) --备注)job 里insert 日志表 select 你的jobid ,'名称','你的运行结果',getdate(),''
------解决方案--------------------
楼主,不需要作任何记录,只需要查询MSDB数据库中sysjobhistory表即可。
该表记录了所有JOB每个步骤的运行结果。直接查即可。