Exec msdb.dbo.sp_send_dbmail 參數詳解(SQL Server 存儲過程發郵件)

来源:https://www.cnblogs.com/shuihaya/archive/2019/12/26/12100261.html
-Advertisement-
Play Games

<!--文章類型-->轉載oriency755 發佈於2012-12-04 11:34:45 閱讀數 6870 收藏 sp_send_dbmail [ [ @profile_name = ] 'profile_name' ] [ , [ @recipients = ] 'recipients [ ; ...


 

轉載 發佈於2012-12-04 11:34:45 閱讀數 6870 收藏   sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]
    [ , [ @recipients = ] 'recipients [ ;n ]' ]
    [ , [ @copy_recipients = ] 'copy_recipient [ ;n ]' ]
    [ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ;n ]' ]
    [ , [ @subject = ] 'subject' ]
    [ , [ @body = ] 'body' ]
    [ , [ @body_format = ] 'body_format' ]
    [ , [ @importance = ] 'importance' ]
    [ , [ @sensitivity = ] 'sensitivity' ]
    [ , [ @file_attachments = ] 'attachment [ ;n ]' ]
    [ , [ @query = ] 'query' ]
 [ , [ @execute_query_database = ] 'execute_query_database' ]
    [ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]
    [ , [ @query_attachment_filename = ] query_attachment_filename ]
    [ , [ @query_result_header = ] query_result_header ]
    [ , [ @query_result_width = ] query_result_width ]
    [ , [ @query_result_separator = ] 'query_result_separator' ]
    [ , [ @exclude_query_output = ] exclude_query_output ]
    [ , [ @append_query_error = ] append_query_error ]
   [ , [ @query_no_truncate = ] query_no_truncate ]
    [ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]


參數
[ @profile_name = ] 'profile_name'

發送郵件的配置文件的名稱。profile_name 的類型為 sysname,預設值為 NULL。profile_name 必須是現有資料庫郵件配置文件的名稱。如果未指定profile_name,則 sp_send_dbmail 使用當前用戶的預設專用配置文件。如果該用戶沒有預設專用配置文件,sp_send_dbmail 會使用msdb 資料庫的預設公共配置文件。如果用戶沒有預設的專用配置文件,而且資料庫也沒有預設的公共配置文件,則必須指定 @profile_name

[ @recipients = ] 'recipients'

要向其發送郵件的電子郵件地址列表,以分號分隔。收件人列表的類型為 varchar(max)。雖然此參數是可選參數,但是必須至少指定@recipients@copy_recipients@blind_copy_recipients 中的一個,否則sp_send_dbmail 將返回錯誤。

[ @copy_recipients = ] 'copy_recipients'

要向其抄送郵件的電子郵件地址列表,以分號分隔。抄送件收件人列表的類型為 varchar(max)。雖然此參數是可選參數,但是必須至少指定@recipients@copy_recipients@blind_copy_recipients 中的一個,否則sp_send_dbmail 將返回錯誤。

[ @blind_copy_recipients = ] 'blind_copy_recipients'

要向其密件抄送郵件的電子郵件地址列表,以分號分隔。密件副本收件人列表的類型為 varchar(max)。雖然此參數是可選參數,但是必須至少指定@recipients@copy_recipients@blind_copy_recipients 中的一個,否則sp_send_dbmail 將返回錯誤。

[ @subject = ] 'subject'

電子郵件的主題。主題的類型為 nvarchar(255)。如果未指定主題,則預設為“SQL Server 消息”。

[ @body = ] 'body'

電子郵件的正文。郵件正文的類型為 nvarchar(max),預設值為 NULL。

[ @body_format = ] 'body_format'

郵件正文的格式。該參數的類型為 varchar(20),預設值為 NULL。如果已指定,則待發郵件的標頭設置會指示郵件正文具有指定格式。該參數可能包含下列值之一:

  • TEXT
  • HTML

預設為 TEXT。

[ @importance = ] 'importance'

郵件的重要性。該參數的類型為 varchar(6)。該參數可能包含下列值之一:

  • Low
  • Normal
  • High

預設值為 Normal。

[ @sensitivity = ] 'sensitivity'

郵件的敏感度。該參數的類型為 varchar(12)。該參數可能包含下列值之一:

  • Normal
  • Personal
  • Private
  • Confidential

預設值為 Normal。

[ @file_attachments = ] 'file_attachments',

電子郵件附件的文件名列表,以分號分隔。必須使用絕對路徑指定列表中的文件。附件列表的類型為 nvarchar(max)

[ @query = ] 'query'

要執行的查詢。查詢結果可以作為文件附加,或包含在電子郵件的正文中。查詢的類型為 nvarchar(max),並且可以包含任何有效的 Transact-SQL 語句。請註意,查詢在單獨的會話中執行,所以調用sp_send_dbmail 的腳本中的局部變數不可用於查詢。

[ @execute_query_database = ] 'execute_query_database'

存儲過程在其中運行查詢的資料庫上下文。該參數的類型為 sysname,預設為當前資料庫。只有在指定 @query 時,此參數才適用。

[ @attach_query_result_as_file = ] attach_query_result_as_file

指定查詢結果集是否作為附件返回。attach_query_result_as_file 的數據類型為 bit,預設值為 0。

如果該值為 0,則查詢結果包含在電子郵件的正文中,在 @body 參數的內容之後。如果該值為 1,則結果作為附件返回。只有在指定@query 時,此參數才適用。

[ @query_attachment_filename = ] query_attachment_filename

指定查詢結果集附件使用的文件名。query_attachment_filename 的數據類型為 nvarchar(255),預設值為 NULL。如果attach_query_result 為 0,則忽略此參數。如果 attach_query_result 為 1 且此參數為 NULL,則資料庫郵件會創建任意文件名。

[ @query_result_header = ] query_result_header

指定查詢結果是否包含列標題。query_result_header 值的數據類型為 bit。如果該值為 1,則查詢結果包含列標題。如果該值為 0,則查詢結果不包含列標題。該參數的預設值為1。只有在指定 @query 時,此參數才適用。

[ @query_result_width = ] query_result_width

用於設置查詢結果的格式的線條寬度(字元)。query_result_width 的數據類型為 int,預設值為 256。提供的值必須介於 10 和 32767 之間。只有在指定@query 時,此參數才適用。

[ @query_result_separator = ] 'query_result_separator'

用於分隔查詢輸出中的列的字元。分隔符的類型為 char(1)。預設為“ ”(空格)。

[ @exclude_query_output = ] exclude_query_output

指定是否使用電子郵件返回查詢執行的輸出。exclude_query_output 的數據類型為 bit,預設值為 0。當此參數為 0 時,sp_send_dbmail 存儲過程的執行將在控制臺上列印作為查詢執行結果而返回的消息。當此參數為 1 時,sp_send_dbmail 存儲過程的執行不會在控制臺上列印任何查詢執行消息。

[ @append_query_error = ] append_query_error

指定是否在 @query 參數指定的查詢返回錯誤時發送電子郵件。append_query_error 的數據類型為bit,預設值為 0。如果此參數的值為 1,則資料庫郵件會發送電子郵件,並電子郵件的正文中顯示查詢錯誤消息。如果此參數的值為 0,則資料庫郵件不發送電子郵件,sp_send_dbmail 在結束時會返回代碼 1,指示失敗。

[ @query_no_truncate = ] query_no_truncate

指定是否使用可避免截斷大型可變長度數據類型(varchar(max)nvarchar(max)varbinary(max)xmltextntextimage 和用戶定義類型)的選項執行查詢。設置該選項後,查詢結果將不包含列標題。query_no_truncate 值的數據類型為 bit。當該值為 0 或未指定時,查詢中的列將截斷為 256 個字元。當該值為 1 時,不截斷查詢中的列。此參數的預設值為 0。

註意:與大量數據一起使用時,@query_no_truncate 選項會占用其他資源,並可降低伺服器的性能。

 

 

[ @mailitem_id = ] mailitem_id [ OUTPUT ]

可選輸出參數將返回消息的 mailitem_idmailitem_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. 發送電子郵件

此示例使用電子郵件地址 [email protected] 向 Dan Wilson 發送電子郵件。該郵件的主題為 Automated Success Message。郵件正文包含一句話 'The stored procedure finished successfully'

EXEC msdb.dbo.sp_send_dbmail@profile_name = 'AdventureWorks Administrator',@recipients = '[email protected]',@body = 'The stored procedure finished successfully.',@subject = 'Automated Success Message' ;B. 發送包含查詢結果的電子郵件

此示例使用電子郵件地址 [email protected] 向 Dan Wilson 發送電子郵件。該郵件的主題為 Work Order Count,並執行查詢以顯示 DueDate 在 2004 年 4 月 30 日後的兩日內的工單數。資料庫郵件將該結果附加為文本文件。

EXEC msdb.dbo.sp_send_dbmail@profile_name = 'AdventureWorks Administrator',@recipients = '[email protected]',@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 電子郵件

此示例使用電子郵件地址 [email protected] 向 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='[email protected]',@subject = 'Work Order List',@body = @tableHTML,@body_format = 'HTML' ;

 

文章轉自:http://hi.baidu.com/hewengao401/item/3fbac843a3e00a9a823ae1c5


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • select count(1) from 表a //查詢時會對常數列進行統計行數select count(*) from 表a //查詢時會找表a中最短的列進行統計行數 因為使用count(*)查詢會有一個找尋最短列的過程,從效率上講會慢一些,雖然不明顯,但是一般我們使用count(1)查詢就可以了 ...
  • 先導知識:Memcache Memcache是一個高性能的分散式記憶體對象緩存系統,代碼類似於Hash。 已經有了Memcache,為什麼還要用Redis呢? 下麵Memcache的缺點: 不支持數據持久化存儲 不支持主從 不支持分片 而對比Redis資料庫,以上三點都支持,所以要使用redis。 問 ...
  • 本文主要針對中小型應用或網站,重點探討日常程式開發中SQL語句的優化問題,所謂“大數據”、“高併發”僅針對中小型應用而言,專業的資料庫運維大神請無視。以下實踐為個人在實際開發工作中,針對相對“大數據”和相對“高併發”場景的一些應對策略,部分措施並沒有經過嚴格的對比測試和原理分析,如有錯漏歡迎各種批評 ...
  • redis介紹 redis是什麼 redis是一種基於鍵值對的NOsql資料庫,與很多鍵值對資料庫不同,redis中的值 等多種數據機構和演算法組成,因為redis會將所有的數據都放在記憶體中,所以他的讀寫性能非常驚人,不僅如此,redis還可以將記憶體中的數據利用快照和日誌的形式保存在硬碟上,redis ...
  • 原文來我的公眾號:Spark性能優化指南——初級篇 一. Spark作業原理 我們使用spark-submit提交一個Spark作業之後,這個作業就會啟動一個對應的Driver進程。該進程是向集群管理器(Yarn,K8s)申請運行Spark作業需要使用的資源,這裡的資源指的就是Executor進程。 ...
  • test* [ ] ````-------> -----------------------------------~~_***nohup rman target / cmdfile=rman.sql msglog=rman.log &####select 'set newname for data... ...
  • For Example: # sqlplus / as sysdbaSQL> START sqlhc.sql T djkbyr8vkc64h ...
  • mysql中用命令行複製表結構的方法主要有一下幾種: 1.只複製表結構到新表 CREATE TABLE 新表 SELECT * FROM 舊表 WHERE 1=2;或 CREATE TABLE 新表 LIKE 舊表 ; 註意上面兩種方式,前一種方式是不會複製時的主鍵類型和自增方式是不會複製過去的,而 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...