2

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

4

3 回答 3

3

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

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

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

否则看看这些表:

  • msdb.dbo.sysjobactivity

  • msdb.dbo.sysjobhistory

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

执行 sp_helptext sp_help_jobactivity

于 2008-09-24T06:48:10.667 回答
0

--在查询分析器中复制并正确格式化,以便您轻松理解 --使用查询执行任务(作业) exec msdb.dbo.sp_start_job @job_name ='作业名称',@server_name =服务器名称 --执行后查询是否已完成 声明 @JobId 为 varchar(36) 选择 @JobId = job_id from sysjobs where name = 'Your Job Name' Declare @JobStatus as int set @JobStatus = -1 While @JobStatus <= -1 Begin --根据您的 Job 提供 TimeDelay select @JobStatus = isnull(run_status ,-1) from sysjobactivity JA,sysjobhistory JH where JA.job_history_id = JH.instance_id and JA.job_id = @JobId End select @JobStatus

null = 运行 1 = Fininshed 成功 0 = 错误完成

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

于 2009-02-21T08:31:07.403 回答
0

我从这里得到了更好的代码

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
于 2009-09-30T13:04:47.443 回答