2011-01-26 2 views
5

Я пытаюсь отправить электронное письмо с помощью sp_send_dbmail. Мне нужно, чтобы он отправил один запрос в качестве вложения, а другой - как часть тела письма. Проблема в том, что sp_send_dbmail имеет только один параметр @query, и я не вижу способа добавить еще один.Как использовать sp_send_dbmail для отправки нескольких запросов?

Есть ли какой-либо способ: a) добавить второй запрос (со всеми прикрепленными к нему параметрами) или b) выполнить запрос в переменной, а затем добавить его в тело моего письма?

Я использую SQL-Server 2005.

ТИА!

ответ

5

Используйте параметр @query хранимой процедуры msdb.dbo.sp_send_dbmail для вложения и используйте параметр @body с переменной, которая содержит результат другого запроса.

Пример кода ниже создает строку из истории шагов задания SQL Server, которая содержит элементы таблицы HTML, используемые для отправки электронной почты с использованием хранимой процедуры msdb.dbo.sp_send_dbmail. Вы должны уметь адаптировать его для своих целей.

DECLARE @cat  varchar(MAX), 
     @email_id int 


SELECT @cat = COALESCE(@cat + '', '') 
       + '<tr><td>' 
       + j.[name] + '</td><td>' 
       + CAST(js.step_id AS varchar) + '</td><td>' 
       + js.step_name + '</td><td>' 
       + CONVERT(char(23), jsl.date_created, 121) + '</td><td>' 
       + jsl.[log] + '</td></tr>' 
FROM msdb.dbo.sysjobstepslogs jsl 
     JOIN msdb.dbo.sysjobsteps js ON jsl.step_uid = js.step_uid 
     JOIN msdb.dbo.sysjobs j ON js.job_id = j.job_id 


SET @cat = ' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head> 
<style type="text/css"> 
    td { 
     border: 1pt dotted #ddd; 
    } 

    #log_text { 
     width: 20em; 
    } 
</style> 
</head> 
<body> 
<table> 
<colgroup> 
    <col /> 
    <col /> 
    <col /> 
    <col /> 
    <col id="log_text" /> 
</colgroup> 
<thead> 
<tr> 
<th>Job</th><th>Step</th><th>Step name</th><th>Log created</th><th>Log text</th></tr> 
</thead> 
<tbody> 
     ' + @cat + ' 
</tbody> 
</table> 
</body> 
</html>' 


EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'SQLServerDatabaseMailProfile', 
    @recipients = '[email protected]', 
    @subject = 'SQL Server Database Mail · Job step logs', 
    @body = @cat, 
    @body_format = 'HTML', 
    @mailitem_id = @email_id OUTPUT 
Смежные вопросы