日期:2014-05-18  浏览次数:20438 次

高手请进。。急求一个存储过程!!!!!!!!
在2000或者05以上的版本里面都可以建job(作业);我是在里面建了很大的报表系统,而现在是想对这整个系统做一个监控,监控每一个步骤的执行情况,是否成功,失败的话有是什么原因造成的;然后把监控的结果以邮件的形式发送。

目前的问题是我想知道怎样去抓取每一个JOB执行完成后的结果,好像是有一个存储过程可以抓取;请各位高手大侠教一下我,并告诉我具体用法。(也可以用其他方法,只要能抓取到我想要的东西就行) 比如我想把抓取到的结果放到一个表里面;如下:

日期 作业ID 执行结果 报错原因 。。

2011-01-10 1 成功 NULL
2011-01-10 2 失败 。。。。。。


虔诚的请高手指点

------解决方案--------------------
这个,估计得写软件来实现,帮顶了.
------解决方案--------------------
查了一下,可以利用这个系统视图,整理你的需求

SQL code
select * from msdb..sysjobservers



job_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,  -- jobid
jobName varchar(20),-- job名称
Result varchar(20), -- 运行结果
Runtime datetime,   -- 运行时间
bz varchar(100)  --备注
)


job 里

insert 日志表 select 你的jobid ,'名称','你的运行结果',getdate(),''

------解决方案--------------------
楼主,不需要作任何记录,只需要查询MSDB数据库中sysjobhistory表即可。

该表记录了所有JOB每个步骤的运行结果。直接查即可。