MS SQL: Настройка отправки почты Database Mail
Что нужно:
- MS SQL Server Management Studio (SSMS): https://docs.microsoft.com/ru-ru/sql/ssms/download-sql-server-management-studio-ssms
- Если пользуемся почтовыми сервисами (например mail.ru) - создать пароль приложения. Пароль от почтового аккаунта в таком случае не подойдет. Если используется свой почтовый сервере и/или поддерживающий анонимную отправку - этот пункт можно пропустить.
Настройка выполняется в два этапа:
- Настройка Database Mail
- Настройка SQL Server Agent
Настройка Database Mail
Запускаем 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
- Добавляем Оператора через меню 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 и т.д.