• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

高手请进。。急求一个存储过程!!!!!!!!

baiying15 2011-01-10 11:13:45
在2000或者05以上的版本里面都可以建job(作业);我是在里面建了很大的报表系统,而现在是想对这整个系统做一个监控,监控每一个步骤的执行情况,是否成功,失败的话有是什么原因造成的;然后把监控的结果以邮件的形式发送。

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

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

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


虔诚的请高手指点
...全文
119 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
华夏小卒 2011-01-13
之前得先建个表
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(),''
回复
baiying15 2011-01-13
[Quote=引用 12 楼 wxf163 的回复:]
其实最好的办法是在你作业里加一条语句,执行成功后向你的日志表插一条记录

以后直接查你的日志表就可以了
[/Quote]

大哥。。怎么加呢?能详细说说不,如果失败了怎么记录失败的原因呢?
回复
查询MSDB数据库中sysjobhistory表
回复
coleling 2011-01-13
楼主,不需要作任何记录,只需要查询MSDB数据库中sysjobhistory表即可。

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

回复
王向飞 2011-01-12
其实最好的办法是在你作业里加一条语句,执行成功后向你的日志表插一条记录

以后直接查你的日志表就可以了
回复
baiying15 2011-01-12
咋都没人来讨论了呢?高手些都来发表下高见啊。。。。
回复
华夏小卒 2011-01-10
查了一下,可以利用这个系统视图,整理你的需求

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
作业运行的持续时间,以秒为单位。
回复
baiying15 2011-01-10
额。。接着等。。。还是请有过类似经验经的高手指点哈。。
回复
dawugui 2011-01-10
这个,估计得写软件来实现,帮顶了.
回复
baiying15 2011-01-10
咋个都没人甩我呢?急啊。。求高手们指点哈嘛。。。
回复
baiying15 2011-01-10
[Quote=引用 6 楼 js_szy 的回复:]
查了一下,可以利用这个系统视图,整理你的需求


SQL code
select * from msdb..sysjobservers



job_id
uniqueidentifier
作业标识号。

server_id
int
服务器标识号。

last_run_outcome
tinyint
作业上次运行的结果:

0 = 失败
……
[/Quote]

谢谢。。我先去看一哈。。。
回复
飘零一叶 2011-01-10
DBMAIL就可以实现,当JOB失败时,用DBMAIL向操作员发一份邮件。
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2011-01-10 11:13
社区公告
暂无公告