Можно ли настроить предупреждение в SQL Server 2008, которое будет отправлять электронную почту в случае сбоя задания в определенной категории?
Мне интересно, потому что я хотел бы настроить электронную почту в случае сбоя подписки SSRS - и все эти подписки являются заданиями в категории « Сервер отчетов» .
РЕДАКТИРОВАТЬ - оказывается, что при сбое подписки SSRS само задание не перестает работать, поэтому мой вопрос не будет применяться к использованию мониторинга подписки SSRS. Однако я все еще хотел бы знать для других рабочих мест, которые мы выполняем в нашей среде
AND EXISTS
частьINSERT/SELECT
. И, вероятно, изменить имяReportServerJob_FailQueue
на что-то более общее. :-)Ответы:
Вы можете создать задание, которое проверяет таблицу msdb.dbo.sysjobhistory каждую минуту (или сколько угодно часто). Возможно, вы захотите реализовать таблицу очередей, чтобы вы когда-либо отправляли сообщение только для одного отдельного экземпляра.
Итак, ваш код, который вы можете запланировать на работе, становится:
Теперь я предполагаю, что вы хотите отправить отдельное электронное письмо для каждого сбоя, так что это может быть частью работы (или частью другой работы, хотя это не обязательно целесообразно):
Есть и другие варианты:
Если компонент Database Mail еще не настроен, обратитесь к этому руководству .
Вы также можете использовать сторонние инструменты (например, SQL Sentry Event Manager ), которые значительно упростят эту задачу. Полное раскрытие: я работаю на SQL Sentry.
источник
Исходя из ваших правок, это будет просто продолжение ответа Аарона, касающегося самих сбоев подписки SSRS (а не только задания агента SQL). Я бы предложил просто добавить шаг к заданию по мониторингу работы, или вы можете сделать это как отдельную работу в целом.
Чтобы получить статус подписки, вам нужно просто проверить
ReportServer.dbo.ExecutionLog3
вид .Status
Колонка покажет ничего , кромеrsSuccess
по отказам. Просто фильтр дляRequestType = 'Subscription'
. Вы захотите включить проверку времени, чтобы не проверять все записи каждый раз. Если вы запускаете задание каждые 15 минут, просто проверьтеTimeStart
последние 15 минут.источник