Назад | Перейти на главную страницу

Результаты запроса электронной почты SQL Server

У меня есть запрос, который я хотел бы запускать к SQL Server по регулярному расписанию и получать результаты запроса по электронной почте в список рассылки. Я не ищу ничего навороченного, для моих целей достаточно простого текста с текстом запроса.

Есть ли что-нибудь, что могло бы сделать это из коробки, или мне нужно написать приложение для этого?

Вы можете легко сделать это с помощью SQL Server DB Mail (я думаю, SQL 2005+). Вам нужно будет включить его с помощью инструмента настройки контактной зоны (или системных параметров) и настроить почтовые профили на вашем экземпляре SQL Server перед его использованием.

Вы можете посмотреть SQL BOL или эта статья MSDN в котором перечислены все хранимые процедуры DB Mail и приведены дополнительные ссылки для их использования.

После того, как вы включили DB Mail и настроили почтовый профиль, синтаксис результатов электронного запроса будет примерно таким:

EXEC msdb.dbo.sp_send_dbmail
    @recipients=N'me@mydomain.com',
    @body='Query Results Are Attached', 
    @subject ='Query Results',
    @profile_name ='MyDBMailProfile',
    @query ='SELECT * FROM mytable', 
    @attach_query_result_as_file = 1,
    @query_attachment_filename ='QueryResults.txt'

После того, как ваш оператор работает правильно, вы можете создать задание агента SQL для его выполнения и запускать его по регулярному расписанию.

В качестве альтернативы вы можете использовать osql для выполнения запроса из командного файла, запущенного из планировщика задач. Преимущество этого заключается в том, что ваш пакетный файл может запускать запрос для генерации выходного файла, а затем обрабатывать его, чтобы выполнить необходимую уборку. Я предпочитаю не использовать osql, а делать все из сценария VBScript, поскольку это упрощает создание красивого отчета.

Решение squillman, тем не менее, быстрее.

JR