2011-01-26 3 views
5

sp_send_dbmail을 사용하여 이메일을 보내려고합니다. 하나의 쿼리를 첨부 파일로, 다른 하나를 전자 메일 본문의 일부로 보내야합니다. 문제는 sp_send_dbmail에 @query 매개 변수가 하나만 있기 때문에 다른 매개 변수를 추가 할 수있는 방법이 없다는 것입니다.sp_send_dbmail을 사용하여 여러 쿼리를 보내는 방법은 무엇입니까?

두 번째 쿼리 (모든 매개 변수가 첨부 된) 추가 또는 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]m', 
    @subject = 'SQL Server Database Mail · Job step logs', 
    @body = @cat, 
    @body_format = 'HTML', 
    @mailitem_id = @email_id OUTPUT 
관련 문제