Как я могу отправить SQL Server сообщение об ошибке при неудачном выполнении задания?

SQL Server позволяет настраивать задание для отправки уведомлений по электронной почте, когда он не работает. Это простой и эффективный способ контролировать ваши рабочие места. Однако эти предупреждения не содержат каких-либо подробностей - просто уведомление об успехе или неудаче.

Если сбой задания, это будет выглядеть типичное сообщение электронной почты:

JOB RUN:        'DBA - Consistency Check Databases' was run on 8/14/2011 at 12:00:04 AM
DURATION:       0 hours, 0 minutes, 0 seconds
STATUS:         Failed
MESSAGES:       The job failed.  The Job was invoked by Schedule 2 (Nightly Before 
                Backup 12AM).  The last step to run was step 1 (Check Databases).

Чтобы определить причину сбоя, вы должны перейти к экземпляру в SQL Server Management Studio, найти задание и просмотреть его историю выполнения. В большой среде это может быть болью, чтобы постоянно это делать.

Идеальное письмо с предупреждением будет включать в себя причину сбоя и позволит вам сразу перейти к решению.

Я знаком с этим решение этой проблемы. У кого-нибудь есть опыт? Его недостатки:

  1. вам нужно добавить новый шаг для каждой работы, и
  2. вы должны молиться, чтобы никто не путал предупреждение, spDBA_job_notification

Кто-нибудь придумал лучшее решение?

12 голосов | спросил Nick Chammas 17 PM00000080000002431 2011, 20:18:24

1 ответ


3

У меня есть опыт работы с вышеупомянутая идея . Это хорошо, но лучше было бы сделать что-то вроде Шона.

Мы сделали работу, которая запускается каждые 5 минут и сканирует таблицы MSDB о неудачах работы. Для каждого задания, у которого был сбой, мы запускали SP spDBA_job_notification с его собственным идентификатором, поэтому SP будет проверять шаги истории MSDB на наличие ошибок и отправлять их по электронной почте. Из документации SP: «Хранимая процедура использует идентификатор задания для запроса таблиц агента msdb для самого последнего сообщения об ошибке для этого задания».

Поэтому вместо того, чтобы просто менять каждое задание, лучше создайте один, который сделает все: -).

Другая идея - установить все задания для записи в Windows Event Viewer в случае ошибок /сбоев и прочитать оттуда с помощью расширенный proc xp_ReadErrorLog или автоматический инструмент, если у вас это уже есть в вашей сети. Например, мы использовали HPOV для проверки любых проблем системы и могли настроить простое предупреждение для всех ошибок просмотра событий (нет необходимости в каких-либо пользовательских заданиях или процедурах).

ответил Marian 18 AM000000120000002931 2011, 00:35:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132