SQL作业状态

时间:2008-09-24 05:31:56

标签: sql sql-server stored-procedures

我实际上在SQL 2005中使用SP。使用SP我正在创建一个作业并在特定时间安排它。由于数据库非常庞大,这些工作至少需要5到10分钟才能完成。但我不知道如何检查工作的状态。我想知道它是否已成功完成或执行中是否有任何错误。在异常时我也会返回正确的错误代码。但我不知道我可以在哪里检查此错误代码。

3 个答案:

答案 0 :(得分:3)

这是我能找到的,也许它解决了你的问题:

  1. SP以获得当前的工作活动。
  2.  exec msdb.dbo.sp_help_jobactivity  @job_id = (your job_id here)
    

    您可以执行此SP并将结果放在临时表中,并从那里获得所需的结果。

    否则看看这些表:

    • msdb.dbo.sysjobactivity

    • msdb.dbo.sysjobhistory

    运行以下命令以查看这些表之间的关联。

      

    exec sp_helptext sp_help_jobactivity

答案 1 :(得分:0)

- 在Query analizer中复制并正确格式化,以便您轻松理解 - 使用Query执行任务(Job) exec msdb.dbo.sp_start_job @job_name ='作业名',@ server_name =服务器名称 - 执行查询后检查weateher是否完成 将@JobId声明为varchar(36) 从sysjobs中选择@JobId = job_id,其中name ='Your Job Name' 将@JobStatus声明为int set @JobStatus = -1 而@JobStatus< = -1 开始          - 根据您的工作提供TimeDelay     select @JobStatus = isnull(run_status,-1)     来自sysjobactivity JA,sysjobhistory JH     其中JA.job_history_id = JH.instance_id和JA.job_id = @JobId 结束 选择@JobStatus

null =正在运行 1 =成功完成 0 =完成但错误

- 一旦你的工作结束,你就会得到结果

答案 2 :(得分:0)

我从here

获得了更好的代码
Use msdb
go

select distinct j.Name as "Job Name", j.description as "Job Description", h.run_date as LastStatusDate, 
case h.run_status 
when 0 then 'Failed' 
when 1 then 'Successful' 
when 3 then 'Cancelled' 
--when 4 then 'In Progress' 
end as JobStatus
from sysJobHistory h, sysJobs j
where j.job_id = h.job_id and h.run_date = 
(select max(hi.run_date) from sysJobHistory hi where h.job_id = hi.job_id)
order by 1