带附件的数据库电子邮件(excel文件/ pdf文件)?

cgs*_*ari 4 sql-server sql-server-2005 sql-server-2008

我要将数据库中的邮件发送到带有附件的mail-id.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
                  WHERE DueDate > ''2004-04-30''
                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1 ;
Run Code Online (Sandbox Code Playgroud)

从这段代码我得到txt文件的结果.但我想在pdf文件或excel文件中获取查询结果

任何人都知道的意思请与我分享.

提前谢谢!:)

Fra*_*ank 13

这会将您的查询结果作为csv附加,如果您更喜欢该格式,只需将其更改为filename.xls.我认为csv工作得更好,使用excel你可能会收到一个警告,说文件的格式与扩展名指定的格式不同.

此外,我使用CHAR(9)或TAB作为查询结果分隔符,您可以将其更改为适合您的任何内容.

我还在您的查询中添加了SET NOCOUNT ON,如果您没有在excel文件的末尾获得(受影响的1000行)(查询返回的行数).

DECLARE
    @tab char(1) = CHAR(9)

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Adventure Works Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @query = 'SET NOCOUNT ON 
              SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
              WHERE DueDate > ''2004-04-30''
              AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,
    @subject = 'Work Order Count',
    @attach_query_result_as_file = 1,
    @query_attachment_filename='filename.csv',
    @query_result_separator=@tab,
    @query_result_no_padding=1
Run Code Online (Sandbox Code Playgroud)