2011-01-26 23 views
5

sp_send_dbmailを使用してメールを送信しようとしています。添付ファイルとして1つのクエリを送信し、メールの本文の一部として別のクエリを送信する必要があります。問題は、sp_send_dbmailに@queryパラメータが1つしかないことです。別の方法を追加する方法はありません。sp_send_dbmailを使用して複数のクエリを送信するにはどうすればよいですか?

a)2番目のクエリを追加する(すべてのパラメータを付けた)か、b)クエリを変数に実行して、それをメールの本文に追加する方法はありますか?

私はSQL Server 2005を使用しています。

TIA!

答えて

5

ストアドプロシージャmsdb.dbo.sp_send_dbmail@queryパラメータを添付ファイルに使用し、@bodyパラメータに他のクエリの結果を含む変数を使用します。

以下のサンプルコードは、ストアドプロシージャmsdb.dbo.sp_send_dbmailを使用して電子メールを送信するために使用されるHTMLテーブル要素を含むSQL Serverジョブステップ履歴から文字列を作成します。あなたはあなたの目的のためにそれを適応させることができるはずです。

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 
関連する問題