Проблема:
Недавно мы столкнулись с ситуацией, когда одно из наших важных заданий SQL Server Agent не смогло отправить уведомление в нашей рабочей среде. Это задание отвечает за подачу данных нашему финансовому приложению, которое является важным для отслеживания текущих тенденций. Нам необходимо определить причину этой проблемы.
Решение:
Для решения этой проблемы мы выполнили следующие шаги:
Шаг 1 – Проверка почты SQL Server Database Mail
Первый шаг – протестировать, может ли система отправлять электронные письма с использованием профиля Database Mail в SQL Server Management Studio. Для этого перейдите в раздел “Управление” > “Database Mail”, щелкните правой кнопкой мыши на “Database Mail” и выберите опцию “Отправить тестовое письмо…”. В интерфейсе выберите правильный профиль Database Mail, введите адрес электронной почты получателя, тему и текст сообщения, а затем нажмите кнопку “Отправить тестовое письмо”. Если тест прошел успешно, это указывает на то, что включена очередь ExternalMailQueue и нет проблемы с блокировкой порта SMTP правилом брандмауэра. Вы можете использовать следующий код, чтобы проверить, включена ли внешняя почтовая очередь:
SELECT * FROM msdb.sys.service_queues WHERE name = N'ExternalMailQueue'
Шаг 2 – Проверка оператора SQL Server
Если тест Database Mail прошел успешно, следующим шагом является проверка, был ли оператор удален из SQL Server Agent. Перейдите в раздел “SQL Server Agent” > “Операторы” в SQL Server Management Studio. Если оператор все еще присутствует и его свойства указаны правильно, то это не является корневой причиной проблемы.
Шаг 3 – Проверка профиля почты SQL Server Agent
Если предыдущие шаги не выявили проблему, вероятно, она связана с SQL Server Agent. Проверьте свойства SQL Server Agent, щелкнув правой кнопкой мыши на SQL Server Agent в SQL Server Management Studio и выбрав опцию “Свойства”. Перейдите на вкладку “Система оповещений” и просмотрите свойства. В нашем случае мы обнаружили, что профиль Database Mail не был включен для SQL Server Agent.
Шаг 4 – Включение профиля почты в SQL Server Agent
Для решения этой проблемы установите флажок “Включить профиль почты” и выберите систему почты и профиль почты в интерфейсе. В качестве альтернативы вы можете использовать следующую команду для включения профиля Database Mail для SQL Server Agent:
USE [msdb]
GO
EXEC msdb.dbo.sp_set_sqlagent_properties
@email_save_in_sent_folder=1,
@databasemail_profile=N'DBAxxxxx', -- укажите здесь свой профиль почты базы данных
@use_databasemail=1
GO
Шаг 5 – Перезапуск SQL Server Agent
После включения профиля Database Mail рекомендуется перезапустить службу SQL Server Agent. Это гарантирует, что изменения вступят в силу. Вы можете протестировать уведомление, запустив задание, которое включает уведомление. В нашем случае мы протестировали уведомление без перезапуска службы.
Следуя этим шагам, вы можете устранить проблемы с уведомлениями о заданиях SQL Server Agent и убедиться, что важные уведомления отправляются, как ожидается.