2011-01-26 16 views
5

Sto tentando di inviare un messaggio di posta elettronica utilizzando sp_send_dbmail. Mi serve per inviare una query come allegato e un'altra come parte del corpo dell'e-mail. Il problema è che sp_send_dbmail ha solo un parametro @query e non riesco a vedere alcun modo per aggiungerne un altro.Come posso utilizzare sp_send_dbmail per inviare più query?

Esiste un modo per a) aggiungere una seconda query (con tutti i parametri ad essa associati) o b) eseguire la query in una variabile e quindi aggiungerla al corpo della mia e-mail?

Sto utilizzando SQL-Server 2005.

TIA!

risposta

5

Utilizzare il parametro @query della stored procedure msdb.dbo.sp_send_dbmail per l'allegato e utilizzare il parametro @body con una variabile che contiene il risultato dell'altra query.

Il codice di esempio seguente crea una stringa dalla cronologia del processo di lavoro di SQL Server che contiene elementi di tabella HTML utilizzati per inviare un messaggio di posta elettronica utilizzando la stored procedure msdb.dbo.sp_send_dbmail. Dovresti essere in grado di adattarlo per i tuoi scopi.

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 
Problemi correlati