使用擴(kuò)展存儲(chǔ)過程(xp_findnextmsg、xp_readmail 和 xp_deletemail)處理 Microsoft® SQL Server™ 收件箱中收到的郵件(應(yīng)只有單個(gè)查詢)。SQL Server 用 xp_sendmail 擴(kuò)展存儲(chǔ)過程向郵件發(fā)送者返回結(jié)果集。
sp_processmail [ [ @subject = ] 'subject' ]
[ , [ @filetype = ] 'filetype' ]
[ , [ @separator = ] 'separator' ]
[ , [ @dbuse = ] 'dbname' ]
[ , [ @set_user = ] 'user' ]
[@subject =] 'subject'
是郵件的主題行,該行將解釋為 SQL Server 查詢。subject 為 varchar(255) 類型,其默認(rèn)值為 NULL。若指定此參數(shù),sp_processmail 將只處理有此主題的郵件。默認(rèn)情況下,SQL Server 象處理查詢一樣處理所有郵件。
[@filetype =] 'filetype'
是將結(jié)果集文件發(fā)送回郵件發(fā)送者時(shí)使用的文件擴(kuò)展名。filetype 為 varchar(3) 類型,其默認(rèn)值為 txt。
[@separator =] 'separator'
是結(jié)果集中每列的列分隔符(字段終止符)。這一信息將傳遞給擴(kuò)展存儲(chǔ)過程 xp_sendmail 以向郵件發(fā)送者返回結(jié)果集。separator 為 varchar(3) 類型,其默認(rèn)值為 tab,表示在各列之間使用制表符的特殊情況。
[@set_user =] 'user'
是應(yīng)在其中運(yùn)行查詢的安全上下文。user 的數(shù)據(jù)類型為 sysname。如果沒有指定 user,則安全上下文默認(rèn)授予執(zhí)行 xp_sendmail 的用戶。
[@dbuse =] 'dbname'
是查詢應(yīng)運(yùn)行于其中的數(shù)據(jù)庫上下文。dbname 為 sysname 類型,其默認(rèn)值為 master。
0(成功)或 1(失?。?/P>
無
外來電子郵件應(yīng)以一個(gè)單獨(dú)的有效 SQL Server 查詢作為其郵件正文。查詢的結(jié)果將返回給郵件發(fā)件人,并抄送給抄送列表中的所有電子郵件用戶。郵件經(jīng)過處理后,將從收件箱中刪除。如果時(shí)常有電子郵件發(fā)送給服務(wù)器,就應(yīng)經(jīng)常運(yùn)行 sp_processmail。若要設(shè)置定期的電子郵件處理,可使用 SQL Server 代理程序來調(diào)度 sp_processmail 作業(yè)。這樣,郵件將按指定的頻率處理,并在作業(yè)歷史記錄中記錄信息性消息,其中包含已處理的查詢數(shù)目。
返回結(jié)果將作為附件文件發(fā)送。所發(fā)送文件的完整文件名由 Sql 后加隨機(jī)數(shù)字字符串構(gòu)成,然后是指定的擴(kuò)展名(文件類型),例如 Sql356.txt。
重要 若要在郵件中附加適當(dāng)?shù)膱D標(biāo),需確保文件類型的關(guān)聯(lián)正確。若要?jiǎng)?chuàng)建文件關(guān)聯(lián),請(qǐng)雙擊桌面上的"我的電腦",然后選擇"視圖"菜單中的"選項(xiàng)"命令。在"選項(xiàng)"對(duì)話框中的"文件類型"選項(xiàng)卡上,指定用于打開文件的應(yīng)用程序。
處理查詢時(shí)收到的錯(cuò)誤通過郵件正文返回給郵件發(fā)送者。將結(jié)果集返回給客戶端時(shí),會(huì)調(diào)用 xp_sendmail,并將其參數(shù) @echo_error 設(shè)為 true。所發(fā)送的郵件還會(huì)包括查詢的行數(shù)(影響到的行數(shù))。
可為不同數(shù)據(jù)庫中的查詢?cè)O(shè)置不同的 sp_processmail 作業(yè)。例如,可采用這樣的約定:對(duì)數(shù)據(jù)庫 pubs 的查詢的主題必須為 SQL:pubs。然后,可運(yùn)行 sp_processmail,并使用參數(shù) subject = SQL:pubs 及 dbname = pubs。其它數(shù)據(jù)庫查詢和分組可有其它格式化的結(jié)構(gòu)。例如,分發(fā)任務(wù)可有 subject = SQL:distribution 和 dbname = distribution。任何這些任務(wù)均可以是 SQL Server 代理程序調(diào)度的作業(yè)。
也可以按許多方式自定義 sp_processmail 系統(tǒng)存儲(chǔ)過程,方法是用 sp_helptext 系統(tǒng)存儲(chǔ)過程檢索該過程的正文,然后修改其 Transact-SQL 代碼。可能的更改包括:
只有 sysadmin 固定服務(wù)器角色或 db_owner 固定數(shù)據(jù)庫角色的成員可執(zhí)行此過程。
下面的示例處理 pubs 數(shù)據(jù)庫中的所有郵件,并將結(jié)果集以 CSV(逗號(hào)分隔的值)格式返回給客戶端。
sp_processmail @filetype = 'CSV', @separator = ',', @dbuse = 'pubs'
相關(guān)文章