2008-09-24 4 views
2

Я фактически работаю над SP в SQL 2005. Используя SP, я создаю задание и планирую его в определенное время. Эти задания занимают от 5 до 10 минут, так как база данных очень огромная. Но я не знаю, как проверить статус задания. Я хочу знать, успешно ли он завершен или произошла ошибка при исполнении. В случае исключения я также возвращаю правильный код ошибки. Но я не знаю, где я могу проверить этот код ошибки.Статус задания SQL

ответ

3

Это то, что я мог бы найти, может быть, это решает проблему:

  1. SP, чтобы получить текущую activiity работу.
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

0

--copy в Query и форматировать анализатором это правильно, так что вы можете понять это easyly --to выполнить свою задачу (задание) с помощью Query EXEC msdb.dbo.sp_start_job @job_name = 'Название работы', @ имя_сервера = имя сервера - После выполнения запроса для проверки weateher он завершен или нет Объявить @JobId как varchar (36) Выберите @JobId = job_id из sysjobs, где name = 'Your Job Name ' Объявление @JobStatus как int set @JobStatus = -1 Хотя @JobStatus < = -1 Начало --Provide TimeDelay по вашей Работа выберите @JobStatus = IsNull (run_status, -1) от sysjobactivity JA, sysjobhistory JH где JA.job_history_id = JH.instance_id и JA.job_id = @JobId End выберите @JobStatus

нуль = Запуск 1 = Fininshed успешно 0 = Закончено с ошибкой

--Once вашей работы будет fininsh вы получите результат

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 
+1

ПРЕДУПРЕЖДЕНИЕ: run_status из 4 (в процессе) не происходит (http://msdn.microsoft.com/en-us/library/ms174997.aspx) – 2010-05-26 15:18:24

Смежные вопросы