在SQL Server 2005中自动通过电子邮件发送查询结果

时间:2011-04-27 05:18:34

标签: sql-server

有谁知道如何在SQL Server 2005中设置一个作业,将作为附件的查询结果通过电子邮件发送?

我希望以XML形式发送电子邮件,以便在Excel中很好地打开它们,但我会满足于CSV ...

提前致谢!

-ev

1 个答案:

答案 0 :(得分:4)

基本上,您可以使用DBMail,如果这是您在SQL Server中发送电子邮件的首选方法。这里的another thread向您展示了一个示例,并讨论了通过该方法发送查询结果的限制。

因此,将此添加到您的预定作业中,您应该得到所需的结果。

如果您要使用CSV或类似内容,以下是如何控制电子邮件straight from MSDN中的查询输出和展示位置:

  

[ @attach_query_result_as_file = ]   attach_query_result_as_file指定   查询的结果集是否为   作为附件返回。   attach_query_result_as_file属于类型   位,默认值为0.

     

当值为0时,查询结果   包含在电子邮件正文中   消息,之后的内容   @body参数。当值为1时,   结果返回为   附件。此参数仅   如果指定了@query,则适用。

     

[ @query_attachment_filename =]   query_attachment_filename指定   用于结果的文件名   查询附件的集合。   query_attachment_filename属于类型   nvarchar(255),默认值为NULL。   当该参数被忽略时   attach_query_result是0.当   attach_query_result是1,这个   参数为NULL,数据库邮件   创建一个任意文件名。

     

[ @query_result_header =]   query_result_header指定是否   查询结果包括列   头。 query_result_header值   是类型位。当值为1时,   查询结果包含列标题。   当值为0时,查询结果为   不包括列标题。这个   参数默认为1.这   参数仅适用于@query   已指定。

     

[ @query_result_width =]   query_result_width是行宽,   字符,用于格式化   查询的结果。该   query_result_width的类型为int,   默认值为256.该值   提供的必须在10到32767之间。   此参数仅适用于   指定了@query。

     

[ @query_result_separator =]   'query_result_separator'是   用于分隔列的字符   查询输出。分离器是   键入char(1)。默认为''(空格)。

如果要使用XML,只需确保查询返回XML即可。否则,您必须编写一个过程来将表格式查询格式化为XML。

Here's another route使用SSIS,但它更复杂,但可以让您更好地控制输出和格式。