發送郵件的配置文件的名稱。profile_name 的類型爲 sysname,默認值爲 NULL。profile_name 必須是現有數據庫郵件配置文件的名稱。若是未指定profile_name,則 sp_send_dbmail 使用當前用戶的默認專用配置文件。若是該用戶沒有默認專用配置文件,sp_send_dbmail 會使用msdb 數據庫的默認公共配置文件。若是用戶沒有默認的專用配置文件,並且數據庫也沒有默認的公共配置文件,則必須指定 @profile_name。html
要向其發送郵件的電子郵件地址列表,以分號分隔。收件人列表的類型爲 varchar(max)。雖然此參數是可選參數,可是必須至少指定@recipients、@copy_recipients 或 @blind_copy_recipients 中的一個,不然sp_send_dbmail 將返回錯誤。數據庫
要向其抄送郵件的電子郵件地址列表,以分號分隔。抄送件收件人列表的類型爲 varchar(max)。雖然此參數是可選參數,可是必須至少指定@recipients、@copy_recipients 或 @blind_copy_recipients 中的一個,不然sp_send_dbmail 將返回錯誤。安全
要向其密件抄送郵件的電子郵件地址列表,以分號分隔。密件副本收件人列表的類型爲 varchar(max)。雖然此參數是可選參數,可是必須至少指定@recipients、@copy_recipients 或 @blind_copy_recipients 中的一個,不然sp_send_dbmail 將返回錯誤。服務器
電子郵件的主題。主題的類型爲 nvarchar(255)。若是未指定主題,則默認爲「SQL Server 消息」。網絡
電子郵件的正文。郵件正文的類型爲 nvarchar(max),默認值爲 NULL。app
郵件正文的格式。該參數的類型爲 varchar(20),默認值爲 NULL。若是已指定,則待發郵件的標頭設置會指示郵件正文具備指定格式。該參數可能包含下列值之一:ide
默認爲 TEXT。工具
郵件的重要性。該參數的類型爲 varchar(6)。該參數可能包含下列值之一:性能
默認值爲 Normal。spa
郵件的敏感度。該參數的類型爲 varchar(12)。該參數可能包含下列值之一:
默認值爲 Normal。
電子郵件附件的文件名列表,以分號分隔。必須使用絕對路徑指定列表中的文件。附件列表的類型爲 nvarchar(max)。
要執行的查詢。查詢結果能夠做爲文件附加,或包含在電子郵件的正文中。查詢的類型爲 nvarchar(max),而且能夠包含任何有效的 Transact-SQL 語句。請注意,查詢在單獨的會話中執行,因此調用sp_send_dbmail 的腳本中的局部變量不可用於查詢。
存儲過程在其中運行查詢的數據庫上下文。該參數的類型爲 sysname,默認爲當前數據庫。只有在指定 @query 時,此參數才適用。
指定查詢結果集是否做爲附件返回。attach_query_result_as_file 的數據類型爲 bit,默認值爲 0。
若是該值爲 0,則查詢結果包含在電子郵件的正文中,在 @body 參數的內容以後。若是該值爲 1,則結果做爲附件返回。只有在指定@query 時,此參數才適用。
指定查詢結果集附件使用的文件名。query_attachment_filename 的數據類型爲 nvarchar(255),默認值爲 NULL。若是attach_query_result 爲 0,則忽略此參數。若是 attach_query_result 爲 1 且此參數爲 NULL,則數據庫郵件會建立任意文件名。
指定查詢結果是否包含列標題。query_result_header 值的數據類型爲 bit。若是該值爲 1,則查詢結果包含列標題。若是該值爲 0,則查詢結果不包含列標題。該參數的默認值爲1。只有在指定 @query 時,此參數才適用。
用於設置查詢結果的格式的線條寬度(字符)。query_result_width 的數據類型爲 int,默認值爲 256。提供的值必須介於 10 和 32767 之間。只有在指定@query 時,此參數才適用。
用於分隔查詢輸出中的列的字符。分隔符的類型爲 char(1)。默認爲「 」(空格)。
指定是否使用電子郵件返回查詢執行的輸出。exclude_query_output 的數據類型爲 bit,默認值爲 0。當此參數爲 0 時,sp_send_dbmail 存儲過程的執行將在控制檯上打印做爲查詢執行結果而返回的消息。當此參數爲 1 時,sp_send_dbmail 存儲過程的執行不會在控制檯上打印任何查詢執行消息。
指定是否在 @query 參數指定的查詢返回錯誤時發送電子郵件。append_query_error 的數據類型爲bit,默認值爲 0。若是此參數的值爲 1,則數據庫郵件會發送電子郵件,並電子郵件的正文中顯示查詢錯誤消息。若是此參數的值爲 0,則數據庫郵件不發送電子郵件,sp_send_dbmail 在結束時會返回代碼 1,指示失敗。
指定是否使用可避免截斷大型可變長度數據類型(varchar(max)、nvarchar(max)、varbinary(max)、xml、text、ntext、image 和用戶定義類型)的選項執行查詢。設置該選項後,查詢結果將不包含列標題。query_no_truncate 值的數據類型爲 bit。當該值爲 0 或未指定時,查詢中的列將截斷爲 256 個字符。當該值爲 1 時,不截斷查詢中的列。此參數的默認值爲 0。
注意:與大量數據一塊兒使用時,@ query_no_truncate 選項會佔用其餘資源,並可下降服務器的性能。
可選輸出參數將返回消息的 mailitem_id。mailitem_id 的類型爲 int。
0(成功)或 1(失敗)
結果集成功時,返回消息「郵件已排隊」。
備註使用前,必須使用數據庫郵件配置嚮導、SQL Server 外圍應用配置器工具或 sp_configure 啓用數據庫郵件。
sysmail_stop_sp 經過中止外部程序使用的 Service Broker 對象來中止數據庫郵件。使用 sysmail_stop_sp 中止數據庫郵件後,sp_send_dbmail 仍會接受郵件。若要啓動數據庫郵件,請使用sysmail_start_sp。
若是未指定 @profile,則 sp_send_dbmail 使用默認配置文件。若是發送電子郵件的用戶具備默認專用配置文件,則數據庫郵件使用該配置文件。若是該用戶沒有默認的專用配置文件,則sp_send_dbmail 將使用默認的公共配置文件。若是用戶沒有默認的專用配置文件和默認的公共配置文件,則 sp_send_dbmail 將返回錯誤。
sp_send_dbmail 不支持沒有任何內容的電子郵件。若要發送電子郵件,至少必須指定 @body、@query、@file_attachments 或@subject 之一。不然,sp_send_dbmail 會返回錯誤。
數據庫郵件使用當前用戶的 Microsoft Windows 安全上下文控制對文件的訪問。所以,通過 SQL Server 身份驗證的用戶沒法使用 @file_attachments 附加文件。Windows 不容許 SQL Server 從一臺遠程計算機向另外一臺遠程計算機提供憑據。因此,若是從運行 SQL Server 的計算機之外的計算機運行該命令,則數據庫郵件可能沒法從網絡共享附加文件。
若是已同時指定 @query 和 @file_attachments 且未找到文件,則查詢仍然會執行,可是不會發送電子郵件。
指定查詢後,結果集的格式被設置爲內聯文本。使用十六進制格式發送結果中的二進制數據。
參數 @recipients、@copy_recipients 和 @blind_copy_recipients 是以分號分隔的電子郵件地址列表。至少必須提供以上參數之一,不然sp_send_dbmail 會返回錯誤。
在沒有事務上下文的狀況下執行 sp_send_dbmail 時,數據庫郵件將啓動並提交隱式事務。從現有事務內執行 sp_send_dbmail 時,數據庫郵件將依賴用戶提交或回滾任何更改。它不會啓動內部事務。
權限默認狀況下,msdb 數據庫中的 DatabaseMailUser 數據庫角色的全部成員對sp_send_dbmail 都有執行權限。不過,若是發送郵件的用戶不具備使用該請求的配置文件的權限,sp_send_dbmail 會返回錯誤且不發送該郵件。
示例 A. 發送電子郵件此示例使用電子郵件地址 danw@Adventure-Works.com 向 Dan Wilson 發送電子郵件。該郵件的主題爲 Automated Success Message。郵件正文包含一句話 'The stored procedure finished successfully'。
EXEC msdb.dbo.sp_send_dbmail@profile_name = 'AdventureWorks Administrator',@recipients = 'danw@Adventure-Works.com',@body = 'The stored procedure finished successfully.',@subject = 'Automated Success Message' ;B. 發送包含查詢結果的電子郵件此示例使用電子郵件地址 danw@Adventure-Works.com 向 Dan Wilson 發送電子郵件。該郵件的主題爲 Work Order Count,並執行查詢以顯示 DueDate 在 2004 年 4 月 30 往後的兩日內的工單數。數據庫郵件將該結果附加爲文本文件。
EXEC msdb.dbo.sp_send_dbmail@profile_name = 'AdventureWorks Administrator',@recipients = 'danw@Adventure-Works.com',@query = 'SELECT COUNT(*) FROM AdventureWorks.Production.WorkOrderWHERE DueDate > ''2004-04-30''AND DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,@subject = 'Work Order Count',@attach_query_result_as_file = 1 ;A. 發送 HTML 電子郵件此示例使用電子郵件地址 danw@Adventure-Works.com 向 Dan Wilson 發送電子郵件。郵件的主題爲 Work Order List,幷包含一個 HTML 文檔,其中列出DueDate 在 2004 年 4 月 30 往後的二日內的工單。數據庫郵件使用 HTML 格式發送該郵件。
DECLARE @tableHTML NVARCHAR(MAX) ;SET @tableHTML =N'<H1>Work Order Report</H1>' +N'<table border="1">' +N'<tr><th>Work Order ID</th><th>Product ID</th>' +N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +N'<th>Expected Revenue</th></tr>' +CAST ( ( SELECT td = wo.WorkOrderID, '',td = p.ProductID, '',td = p.Name, '',td = wo.OrderQty, '',td = wo.DueDate, '',td = (p.ListPrice - p.StandardCost) * wo.OrderQtyFROM AdventureWorks.Production.WorkOrder as woJOIN AdventureWorks.Production.Product AS pON wo.ProductID = p.ProductIDWHERE DueDate > '2004-04-30'AND DATEDIFF(dd, '2004-04-30', DueDate) < 2ORDER BY DueDate ASC,(p.ListPrice - p.StandardCost) * wo.OrderQty DESCFOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) +N'</table>' ;EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',@subject = 'Work Order List',@body = @tableHTML,@body_format = 'HTML' ;
文章轉自:http://hi.baidu.com/hewengao401/item/3fbac843a3e00a9a823ae1c5