Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Доброго дня, коллеги.
Есть перечень JOB, которые как и положено, выполняются по расписанию
Каждый JOB состоит из EXEC бла-бла-бла
При падании JOB приходит письмо по почте.
Задача следующая:
Необходимо если джоба отработала успешно - класть в поле значение 1, если упала - 0.
Как это сделать?
31 окт 12, 12:02    [13401342]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Александр52
Необходимо если джоба отработала успешно - класть в поле значение 1, если упала - 0.
Как это сделать?

Это и так уже есть в системных таблицах, где хранится job
31 окт 12, 12:05    [13401372]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Glory, был бы признателен Вам за чуть более подробную информацию.
31 окт 12, 12:27    [13401548]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Glory
Member

Откуда:
Сообщений: 104760
BOL - sp_help_job
31 окт 12, 12:28    [13401553]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Спасибо!
31 окт 12, 12:29    [13401567]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
еще раз спасибо Глори, понял точно что мне нужно, теперь возник главный вопрос "Как?"
- есть sp_help_job
- есть значения кодов возврата(0 и 1)
- есть JOB с названием например test
Как написать, чтобы при падении это JOB выводилось в поле значение 0, при успехе 1?
Если я правильно понимаю надо что-то в JOB добавить, типа TRY-CATCH, или выводить через переменную. Но не пойму точно как это сделать.
Приведите пример, плз)
31 окт 12, 13:21    [13401926]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Александр52
Как написать, чтобы при падении это JOB выводилось в поле значение 0, при успехе 1?

При падении джоба вы не можете ничего сделать, кроме отсылки оповещения
Вы можете периодически проверять статус джоба. Например, в другом джобе.
31 окт 12, 13:24    [13401952]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Glory
Вы можете периодически проверять статус джоба. Например, в другом джобе.

Приведите пожалуйста пример.
31 окт 12, 15:09    [13402880]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Alderego
Member

Откуда:
Сообщений: 110
Как вариант, можно реализовать не джобами, а через план обслуживания.
Там можно выстроить процесс, чтобы в случае неудачного выполнения джоба у вас выполнялся какой-либо код\джоб.
Т.е. можете заполнять таблицу своими 0 или 1. Хотя как и сказал Глори есть уже встроенный функционал и незачем изобретать велосипед, используйте представление, там указан статус джоба, также есть полезная таблика dbo.sysjobservers, там вы также можете найти необходимые вам статусы джоба.
31 окт 12, 15:13    [13402922]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Alderego
Member

Откуда:
Сообщений: 110
Александр52,

select a.name 'Название джоба', b.last_run_date 'дата запуска', b.last_run_outcome 'Результат выполнения джоба'
from dbo.sysjobs a, dbo.sysjobservers b
where a.job_id=b.job_id

Можно сделать ещё более красиво, но всё зависит от данных, которые вам необходимы.
31 окт 12, 15:19    [13402977]     Ответить | Цитировать Сообщить модератору
 Re: Записать результат работы джобы в поле(выполнилась/не выполнилась)  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Большое спасибо, так и реализовал, через системные таблицы : )
пример:
SELECT TOP 1000 
     case when ss.[last_run_outcome] in (1,0) then ss.[last_run_outcome] else 0 END IsActiv
      , sj.name
  FROM [msdb].[dbo].[sysjobservers] ss
  INNER JOIN [msdb].[dbo].[sysjobs] sj ON ss.[job_id] = sj.[job_id]
31 окт 12, 17:17    [13403908]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить