У меня есть запрос, который я хотел бы запускать к 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