2

我想发送 db mail ,其中包含两个查询的结果,我该如何实现?

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'try01',
  @recipients = 'yyyyy@yyy.com',
  @subject = 'Table Values',
  @body = 'xxxxxxxxxxxxxx.',
  @execute_query_database = 'Reports',
  @query = 'SELECT * from Table'
4

3 回答 3

4

好的,这很容易,就像您在发送两个查询的结果时加上分号一样。这里是:

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'try01',
  @recipients = 'yyyyy@yyy.com',
  @subject = 'Table Values',
  @body = 'xxxxxxxxxxxxxx.',
  @execute_query_database = 'Reports',
  @query = 'SELECT * from Table; select * from table2'

我现在唯一的问题是把它变成一个体面的格式。

于 2013-05-10T09:07:39.120 回答
2

MSDN 上的 sp_send_dbmail显示单个 @query 参数
因此您只能发送一个查询,除非您可以使用 UNION 来连接结果集。

或者将查询结果保存到磁盘,然后设置@file_attachments(我个人不会)

或使用 Reporting Services 查询电子邮件并将其作为报告发送

于 2013-05-09T09:37:45.973 回答
0

将您的查询放入存储过程中,然后在查询行中调用它。

示例存储过程:

CREATE PROCEDURE build_email_as_query
AS
BEGIN

    SET NOCOUNT ON;

    -- newline var

    declare @lf char(6)
    set     @lf = '<br />'

    -- build the email

    select @lf + @lf

    select 'results 1' + @lf    
    select 'results 2' + @lf    
    select 'results 3' + @lf    

END
GO

执行 sp_send_dbmail:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'profileName', 
    @body = 'Results of query: <br /><br />',
    @body_format ='HTML',
    @recipients = 'test@domain.com',
    @copy_recipients = '',
    @subject = 'testing emails',
    @execute_query_database = 'DatabaseName',
    @query = 'exec build_email_as_query'
于 2017-06-16T15:40:59.390 回答