Sử dụng @query
tham số của thủ tục được lưu trữ msdb.dbo.sp_send_dbmail
cho tệp đính kèm và sử dụng @body
với một biến chứa kết quả của truy vấn khác.
Mã ví dụ bên dưới tạo một chuỗi từ lịch sử bước công việc SQL Server có chứa các phần tử bảng HTML được sử dụng để gửi email bằng thủ tục được lưu trữ msdb.dbo.sp_send_dbmail
. Bạn sẽ có thể điều chỉnh nó cho các mục đích của mình.
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