我有一个查询,希望定期针对 SQL Server 运行该查询,并将查询结果通过电子邮件发送到分发列表。我不需要任何花哨的东西,只要带有查询文本的纯文本就足以满足我的目的。
有没有什么可以立即实现这一点的东西,或者我是否需要编写一个应用程序来做到这一点?
答案1
您可以使用 SQL Server DB Mail(我认为是 SQL 2005+)轻松完成此操作。您需要通过表面区域配置工具(或系统选项)启用它,并在使用它之前在 SQL Server 实例上配置邮件配置文件。
您可以查看 SQL BOL,或者这篇 MSDN 文章其中列出了所有 DB Mail 存储过程并提供了使用它们的其他链接。
一旦启用了 DB Mail 并配置了邮件配置文件,通过电子邮件发送查询结果的语法将如下所示:
EXEC msdb.dbo.sp_send_dbmail
@recipients=N'[email protected]',
@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 代理作业来执行它并让它按照定期计划运行。
答案2
或者,您可以使用 osql 从任务计划程序运行的批处理文件中运行查询。这样做的好处是,您的批处理文件可以运行查询以生成输出文件,然后对其进行后处理以进行适当的整理。我个人的偏好不是使用 osql,而是从 VBScript 脚本执行所有操作,因为这样可以轻松生成漂亮的报告。
不过 squillman 的解决方案更快。
JR