2011-01-26 41 views
5

Estoy tratando de enviar un correo electrónico usando sp_send_dbmail. Necesito que envíe una consulta como un archivo adjunto y otra como parte del cuerpo del correo electrónico. El problema es que sp_send_dbmail solo tiene un parámetro @query, y no veo ninguna forma de agregar otro.¿Cómo puedo usar sp_send_dbmail para enviar múltiples consultas?

¿Hay alguna forma de a) agregar una segunda consulta (con todos los parámetros adjuntos) o b) ejecutar la consulta en una variable y luego agregar eso al cuerpo de mi correo electrónico?

estoy usando SQL-Server 2005.

TIA!

Respuesta

5

Utilice el parámetro @query del procedimiento almacenado msdb.dbo.sp_send_dbmail para el archivo adjunto y utilice el parámetro @body con una variable que contenga el resultado de la otra consulta.

El código de ejemplo siguiente crea una cadena del historial de pasos de trabajo de SQL Server que contiene elementos de tabla HTML utilizados para enviar un correo electrónico utilizando el procedimiento almacenado msdb.dbo.sp_send_dbmail. Debería poder adaptarlo para sus propósitos.

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 
Cuestiones relacionadas