MS SQL: Настройка отправки почты Database Mail

Что нужно:

  • Если пользуемся почтовыми сервисами (например mail.ru) - создать пароль приложения. Пароль от почтового аккаунта в таком случае не подойдет. Если используется свой почтовый сервере и/или поддерживающий анонимную отправку - этот пункт можно пропустить.

Настройка выполняется в два этапа:

  • Настройка Database Mail
  • Настройка SQL Server Agent

Запускаем SQL Server Management Studio (SSMS), подключаемся к MS SQL серверу и далее все делаем в нем.

  • Щелкаем правой кнопкой мыши на Management / Database Mail и выбираем «Configure Database Mail»
  • Нас интересует первый пункт: «Set up Database Mail by performing the following task»
  • Заполняем поля «Account name» и «Description»
  • Добавляем учетную запись для SMTP. Для Mail.ru настройки следующие:
    • Сервер: smtp.mail.ru
    • Порт: 587
    • Включить «This server requires a secure connection (SSL)»
    • Если есть - заполняем логин и пароль
  • Так же при желании можно добавить несколько учетных записей и установить для них приоритет
  • Проходим далее по мастеру, закрываем его и проверяем корректность отправкой тестового письма
  • Добавляем Оператора через меню SQL Server Agent / Operators
  • Щелкаем правой кнопкой мыши на SQL Server Agent и выбираем Properties / Alert System
  • В открывшейся настройке включаем:
    • Enable mail profile
    • Выбираем ваш Mail profile
    • Включаем «Include body of e-mail in notification message»
  • Перезапускаем SQL Server Agent

Создаем Job, добавляем Step с типом «Transact-SQL Script (T-SQL)» (в примере подсчитывается суммарный размер баз):

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'SQLAlerts',  
    @recipients = '[email protected]',  
    @body = 'DB Size for Server',
    @subject = 'DB Size for Server',
    @attach_query_result_as_file = 1,
    @query_attachment_filename = 'Server-DB-Size.csv',
    @query_result_header = 1,
    @query_result_width = 256,
    @query_result_separator = ',',
    @exclude_query_output = 1,
    @append_query_error = 1,
    @query_no_truncate = 0,
    @query_result_no_padding = 1,
    @query = 'SELECT sys.databases.name AS [Database Name],CONVERT(VARCHAR,SUM(size)*8/1024) AS ["Size (MB)"] FROM sys.databases JOIN sys.master_files ON sys.databases.database_id=sys.master_files.database_id GROUP BY sys.databases.name ORDER BY sys.databases.name;';

Необходимо правильно указать имя профиля @profile_name, получателя @recipients и т.д.

  • software/mssql-server/mssql-database-mail.txt
  • Последнее изменение: 2022/07/24 14:51
  • 127.0.0.1