Настройка уведомлений о результатах выполнения планов обслуживания MSSQL

Редактировал(а) Антон Волков 2025/12/14 19:37

Входе настройки процедур резервного копирования баз данных в СУБД MS SQL Server присутствует необходимость отслеживания результатов выполнения планов обслуживания.

Рассмотрим два возможных варианта по уведомлению администраторов резервного копирования.

Настройка почтовых уведомлений

ВНИМАНИЕ!!! Для работы Database Mail требуется установка компонента Net Framework 3.5!!!

В MS SQL Server уже есть встроенный компонент, отвечающий за отправку почты который называется DatabaseMail, который мы можем найти в Object Explorer в каталоге Managment.

1727174326340-402.png

Тыкнув на него нам откроется мастер конфигурации:

1727174386150-365.png

Тыкаем на далее и выбираем первый пункт, в появившемся окошке жмем "YES"

1727174502484-619.png

Жмем указываем имя профиля, жмем Add и добавляем новый Mail Account, где заполняем имя аккаунта, почтовый адрес и настройки подключения к SMTP серверу.

1727174911839-116.png

Нажимаем Ок, Next и в следующем шаге назначаем нашего пользователя профилю.

1727175176170-433.png

Прощёлкиваем далее до конца и жмем закрыть.

Мы настроили компонент Database Mail, теперь необходимо добавить операторов, которым он будет слать уведомления по почте, для этого в Object Explorer переходим во вкладку SQL Server Agent и находим папку Operators, на которой щелкаем правой кнопкой и выпираем New Operator.

1727175466901-841.png

В открывшемся окне заполняем поля Name и E-mail name этого будет достаточно.

1727191514508-873.png

Теперь открываем наш Maintance Plan в котором необходимо настроить уведомления и добавляем элемент "Notify Operator Task", перетаскивая его на наш Maintace Plan

1727175843931-702.png

Теперь нам надо соединить задачу резервного копирования с задачей уведомления оператора и нажать на соединяющую их стрелку. В открывшемся окне выбрать в качестве Evaluation operation - Constraint, в качестве Value - Fail, для того что бы уведомление оператора происходило только при ошибке выполнения задания.

1727176953055-256.png

Сохраняем план обслуживания и ждем уведомлений на почту.

Настройка уведомлений через Telegram

MS SQL Server поддерживаем выполнение скриптов PowerShell через задания SQL Agent.

Отравлять уведомления в телегу будем как раз через PowerShell.

Скрипт:

$token = "35412311473:ADAM7WAcxvWEd1rYVRJev8jgC_dneLL6pxw"   # Полученный нами token 

$chat_id = "-88541191" # Тут указываем id чата
                                                                             
$name=[System.Net.Dns]::GetHostName() | Select 
$text1 = "Ошибка задания резервного копирования MSSQL "

$URI = "https://api.telegram.org/bot" + $token + "/sendMessage?chat_id=" + $chat_id + "&text=" + $text1 + "`n" + $name

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Invoke-WebRequest -URI ($URI) UseBasicParsing

Создаем задание SQL Agent:

 1727191628180-361.png

Добавляем шаг, вводим Step Name, выбираем тип задания PowerShell и вставляем наш скрипт и жмем ОК

1727191658807-862.png

Добавляем в наш план обслуживание выполнения задания 

1727178281093-555.png

1727178306659-555.png

Два раза тыкаем на задачи выполнения агента и выбираем наше задание.

1727178347921-284.png

Жмем ОК и сохраняем план обслуживания.