Состояние задания SQL - PullRequest
       21

Состояние задания SQL

2 голосов
/ 24 сентября 2008

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

Ответы [ 3 ]

3 голосов
/ 24 сентября 2008

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

  1. SP, чтобы получить текущую активность работы.
 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 голосов
/ 30 сентября 2009

Я получил лучший код от здесь

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
0 голосов
/ 21 февраля 2009

- Скопируйте в анализаторе запросов и отформатируйте его правильно, чтобы вы могли легко понять - Для выполнения вашей задачи (Job) с помощью Query exec msdb.dbo.sp_start_job @job_name = «Имя задания», @ server_name = имя сервера - После выполнения запроса проверить, закончен он или нет Объявите @JobId как varchar (36) Выберите @JobId = job_id из sysjobs, где name = 'Ваше имя работы' Объявите @JobStatus как int, установленное @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 </p>

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

- Как только ваша работа закончится, вы получите результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...