Сервер Sql Db Mail, который может отправлять почту для двух или более запросов

Я хочу отправить db mail , который содержит результат двух запросов, как мне это сделать?

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'try01',
  @recipients = '[email protected]',
  @subject = 'Table Values',
  @body = 'xxxxxxxxxxxxxx.',
  @execute_query_database = 'Reports',
  @query = 'SELECT * from Table'

person Bhaskar Mishra    schedule 09.05.2013    source источник
comment
Какие 2 запроса? я вижу один   -  person gbn    schedule 09.05.2013
comment
вы можете предположить, что любой другой запрос на секунду, например, select * from table2, обе таблицы имеют другую структуру.   -  person Bhaskar Mishra    schedule 09.05.2013


Ответы (3)


Хорошо, это было легко, как если бы вы поставили точку с запятой в результате отправки обоих запросов. Вот:

USE msdb
EXEC sp_send_dbmail
  @profile_name = 'try01',
  @recipients = '[email protected]',
  @subject = 'Table Values',
  @body = 'xxxxxxxxxxxxxx.',
  @execute_query_database = 'Reports',
  @query = 'SELECT * from Table; select * from table2'

Единственная проблема, которая у меня есть сейчас, это привести это в прилично выглядящий формат.

person Bhaskar Mishra    schedule 10.05.2013

sp_send_dbmail в MSDN показывает единственный параметр @query
. отправьте только один запрос, если вы не можете использовать UNION для объединения наборов результатов.

Или сохраните результаты запроса на диск, а затем установите @file_attachments (лично я бы не стал)

Или используйте Reporting Services, чтобы запросить и отправить электронное письмо в виде отчета.

person gbn    schedule 09.05.2013

Поместите свои запросы в хранимую процедуру, а затем вызовите ее в строке запроса.

Пример хранимой процедуры:

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

exec sp_send_dbmail:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'profileName', 
    @body = 'Results of query: <br /><br />',
    @body_format ='HTML',
    @recipients = '[email protected]',
    @copy_recipients = '',
    @subject = 'testing emails',
    @execute_query_database = 'DatabaseName',
    @query = 'exec build_email_as_query'
person Taylor Brown    schedule 16.06.2017