2011-01-26 29 views
5

Tôi đang cố gắng gửi email bằng cách sử dụng sp_send_dbmail. Tôi cần nó để gửi một truy vấn dưới dạng tệp đính kèm và một truy vấn khác như một phần của nội dung email. Vấn đề là sp_send_dbmail chỉ có một thông số @query và tôi không thể thấy bất kỳ cách nào để thêm một thông số khác.Tôi làm cách nào để sử dụng sp_send_dbmail để gửi nhiều truy vấn?

Có cách nào để a) thêm truy vấn thứ hai (với tất cả các thông số được đính kèm) hoặc b) thực hiện truy vấn vào biến và sau đó thêm truy vấn đó vào phần nội dung email của tôi?

Tôi đang sử dụng sql-server 2005.

TIA!

Trả lời

5

Sử dụng tham số @query của quy trình được lưu msdb.dbo.sp_send_dbmail cho tệp đính kèm và sử dụng thông số @body với biến chứa kết quả của truy vấn khác.

Mã ví dụ bên dưới tạo 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 quy trình được lưu trữ msdb.dbo.sp_send_dbmail. Bạn sẽ có thể thích nghi nó cho các mục đích của bạn.

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 
Các vấn đề liên quan