我实际上在SQL 2005中使用SP。使用SP我正在创建一个作业并在特定时间安排它。由于数据库非常庞大,这些工作至少需要5到10分钟才能完成。但我不知道如何检查工作的状态。我想知道它是否已成功完成或执行中是否有任何错误。在异常时我也会返回正确的错误代码。但我不知道我可以在哪里检查此错误代码。
答案 0 :(得分:3)
这是我能找到的,也许它解决了你的问题:
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