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
fonte
2011-01-26 21:31:24