Ms sql сообщение о выполнении задания

Обновлено: 30.06.2024

Часто возникает потребность каким-либо способом сообщать администраторам о проблемах, возникших на сервере. Причем уведомления в большинстве своем делятся на 2 типа:

1) реального времени, т. е. те, которые должны приходить сразу при возникновении проблемы
2) отложенного времени, т. е. те, которые приходят через достаточно продолжительное время (более 1 часа) после возникновения проблемы.

В моей работе было необходимо расширить функционал обычного Database Mail.

В данной статье будет рассмотрен пример того, как формировать уведомления в HTML-таблицы с последующей отправкой по почте администраторам.

Решение

1. Настроим Database Mail
2. Создадим таблицу для получателей:

3. Создадим таблицу для адресов получателей:

Эта информация нужна для истории. Но также данную таблицу нужно чистить от очень старых данных (например, старее месяца).

7. Создадим хранимую процедуру, которая возвращает строку из адресов по коду или основному почтовому адресу получателя:

8. Создадим необходимые функции для работы с датой и временем:

11. Создадим два задания в Агенте (первое-для уведомлений реального времени (расписание-1 раз в минуту), второе-для простых уведомлений (расписание-1 раз в час)). В код задания нужно добавить следующее:

Приведем пример регистрации ошибки:

Здесь используется хранимая процедура srv.KillFullOldConnect

Результат

В данной статье был рассмотрен пример расширения функционала обычного Database Mail, а также разобран пример как формировать уведомления в HTML-таблицы с последующей отправкой по почте администраторам. Данный подход позволяет уведомлять администраторов о разных проблемах в реальном времени или через какое-то определенное время. Таким образом, данный подход позволяет минимизировать в будущем наступления критической проблемы и остановки работы СУБД и сервера, что в свою очередь защищает производство от остановки рабочих процессов.

В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.

В этой статье описывается, как настроить параметры уведомления в SQL Server с помощью среды SQL Server Management Studio, Transact-SQL или управляющих объектов SQL Server, чтобы агент Microsoft SQL Server мог отправлять операторам уведомления о заданиях.

Перед началом

безопасность

Использование среды SQL Server Management Studio

Уведомление оператора о состоянии задания

В обозревателе объектов подключитесь к экземпляру компонента Компонент SQL Server Database Engineи разверните его.

Разверните узел Агент SQL Server, выберите раздел Задания, щелкните правой кнопкой мыши задание, которое нужно изменить, и затем выберите Свойства.

В окне Свойства задания перейдите на страницу Уведомления .

Если нужно оповещать оператора по электронной почте, установите флажок Электронная почта, выберите из списка оператора, а затем выберите одно из следующих значений:

При успешном завершении задания известить оператора о том, что задание удачно завершено.

При ошибке задания известить оператора о неуспешном завершении задания.

При завершении задания известить оператора независимо от состояния выполнения.

Если необходимо оповещать оператора по пейджеру, отметьте Пейджер, выберите из списка оператора, а затем выберите один из следующих вариантов:

При успешном завершении задания известить оператора о том, что задание удачно завершено.

При ошибке задания известить оператора о неуспешном завершении задания.

При завершении задания известить оператора независимо от состояния выполнения.

Если нужно оповещать оператора через net send, установите флажок Команда net send, выберите из списка оператора, а затем выберите один из следующих вариантов:

При успешном завершении задания известить оператора о том, что задание удачно завершено.

При ошибке задания известить оператора о неуспешном завершении задания.

При завершении задания известить оператора независимо от состояния выполнения.

Использование Transact-SQL

Уведомление оператора о состоянии задания

В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

На стандартной панели выберите пункт Создать запрос.

Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

Использование управляющих объектов SQL Server

Уведомление оператора о состоянии задания

Для оперативного реагирования необходимо своевременно получать информацию об ошибках выполнения заданий. Для этого в SQL Server существует специальный механизм оповещений. В этой статье мы рассмотрим как его настроить.

Механизм оповещений

Настройку оповещений можно разделить на 4 этапа:

  1. Настройка профиля компонента Database Mail
  2. Создание оператора оповещений и настройка почты агента SQL Server
  3. Включение триггеров и задач оповещений
  4. Проверка работоспособности

Настройка профиля компоненты Database Mail

Компонент DatabaseMail в обозревателе объектов

Компонент DatabaseMail в обозревателе объектов

Мастер настройки компонента Database Mail Создание нового профиля компонента Database Mail

Настройка безопасности профиля Database Mail

Настройка безопасности профиля Database Mail

Отправка тестового письма при помощи компоненты Database Mail

Отправка тестового письма при помощи компоненты Database Mail

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

Добавление оператора оповещений

Операторы в дереве обозревателя объектов

Операторы в дереве обозревателя объектов

Установка свойств оператора

Установка свойств оператора

На этом настройка оператора завершена, перейдем к следующему шагу.

Настройка почты агента SQL Server

Агент SQL Server в дереве обозревателя объектов

Агент SQL Server в дереве обозревателя объектов

Система предупреждений агента SQL Server

Система предупреждений агента SQL Server

Включение триггеров и задач оповещения

Настройка свойств Задания

Настройка свойств Задания

Проверка работоспособности оповещений

Уведомления компонента Database Mail

Уведомления компонента Database Mail

Если не пришло ни одного письма тогда, возможно:

Если не пришло только письмо с результатом выполнения задания: проверьте что почта SQL Server’а настроена в соответствии с вышеизложенным.

MS SQL SERVER настройка уведомлений по почте

После настройки и введения в эксплуатацию MS SQL сервера обязательно потребуется настроить ряд регламентных заданий. Эти задания требуются для автоматического обслуживания развёрнутых баз (проверка баз данных, их резервное копирование, обслуживание индексов и т.д.). При долгосрочном использовании баз могут возникнуть ситуации, когда регламентные задачи могут отрабатываться с ошибками (нехватка места для резервных копий, критические ошибки в базах данных и другие).

Для оперативного оповещения об ошибках выполнения регламентных заданий MS SQL можно настроить специальный компонент оповещения Database Mail.

Настройка Компоненты Database Mail

Вначале необходимо настроить профиль Database Mail. Для этого нужно запустить мастер настройки.

DatabaseMail 01

DatabaseMail 02

Далее нужно задать имя профиля и добавить учётную запись SMTP (адрес и настройки сервера отправки писем).

DatabaseMail 03

DatabaseMail 04

Следующий шаг мастера изменений не требует.

DatabaseMail 05

После создания профиля желательно выполнить проверку, отправив тестовое письмо.

DatabaseMail 06

Добавление оператора оповещений

Теперь требуется создать Операторов (пользователей, которым будут высылаться оповещения).

DatabaseMail 07

Для оператора достаточно указать Имя и адрес почты (куда будут высылаться оповещения)

DatabaseMail 08

Теперь нужно активировать профиль компонента Database Mail в настройках агента SQL.

DatabaseMail 09
DatabaseMail 10

Создание задач оповещения

Читайте также: