← Все статьи

MS SQL: отправить результат запроса по почте из задания (sp_send_dbmail)

Автор: Юрий Нефёдов, системный инженер · 07.10.2022 · обновлено 24.10.2026

Иногда результат запроса нужно регулярно отправлять по почте: отчёт, выгрузку, результат проверки. В SQL Server для этого есть процедура msdb.dbo.sp_send_dbmail, которую можно вызывать вручную или из задания SQL Server Agent по расписанию.

Что нужно заранее

На сервере должна быть настроена компонента Database Mail и создан почтовый профиль. В примере он называется Mail. Учётной записи, от которой выполняется задание, нужна роль DatabaseMailUserRole в базе msdb.

Отправка результата процедуры файлом

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Mail',
@recipients = 'email@domain.ru',
@subject = 'Mail Subject',
@execute_query_database = 'database_name',
@query = 'EXEC procedure_name',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'values.txt'

Если письмо не пришло

Ошибки отправки записываются в журнал Database Mail:

SELECT * FROM msdb.dbo.sysmail_event_log ORDER BY log_date DESC;

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.