SQL Server代理(4/12):配置数据库邮件
SQL Server代理是所有實時數(shù)據(jù)庫的核心。代理有很多不明顯的用法,因此系統(tǒng)的知識,對于開發(fā)人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。
在以前的文章里我們看到,SQL Server代理由一系列的作業(yè)步驟組成,每個作業(yè)步驟是要進行的不同工作類型。SQL Server代理也提供創(chuàng)建警報的功能,它可以發(fā)消息給指定的操作員作為提醒。這些提醒很可能通過數(shù)據(jù)庫郵件發(fā)送,SQL Server和SQL Server代理內(nèi)建的功能來發(fā)送和接收郵件。在這篇文章里,你會學(xué)到如何配置數(shù)據(jù)庫郵件來進行發(fā)送和接收操作,還有數(shù)據(jù)庫郵件的基本故障排除步驟。
數(shù)據(jù)庫郵件的簡單介紹
在SQL Server 2000或以前的版本里,郵件系統(tǒng)就可用,被稱為SQLMail。SQLMail(最終會被移除掉,但在SQL Server 2008 R2里還是存在的)使用MAPI(郵件應(yīng)用程式接口(Messaging Application Programming Interface))的API來代表SQL Server實例來發(fā)送和接收郵件。在這個郵件系統(tǒng)里有很多問題和限制,包括:
- 不支持故障群集
- 依賴別的程序(例如微軟的Outlook)提供的MAPI
- 依賴SQL Server服務(wù)有MAPI配置
- 郵件發(fā)送后,如果發(fā)送失敗不能重發(fā)
- 沒有支持SQL Server可用MAPI版本
由于這些限制,新的郵件系統(tǒng)為SQL Server 2005設(shè)計了。那個新的郵件系統(tǒng),數(shù)據(jù)庫郵件,去掉了這些限制,大大提高了SQL Server郵件的可靠性。在故障群集配置了,數(shù)據(jù)庫郵件完全支持。數(shù)據(jù)庫郵件使用SMTP與郵件服務(wù)器交互,取消了額外郵件API的支持。數(shù)據(jù)庫郵件內(nèi)部使用服務(wù)代理(service broker)對所有郵件進行隊列管理,使郵件系統(tǒng)更加健壯。
數(shù)據(jù)庫郵件可獨立運行,讓T-SQL的調(diào)用到msdb數(shù)據(jù)庫,然后直接與SMTP郵件服務(wù)器交互,使用在msdb數(shù)據(jù)庫存儲的安全信息。
數(shù)據(jù)庫郵件配置
數(shù)據(jù)庫郵件默認是沒有配置的(和SQL Server代理類似)。在可以配置和使用它的功能之前,首先你必須啟用數(shù)據(jù)庫郵件。你有3個不同的方式啟用數(shù)據(jù)庫郵件:
數(shù)據(jù)庫郵件配置向?qū)?/span>
- 圖形化向?qū)?#xff0c;從SSMS啟動,會啟用數(shù)據(jù)庫郵件并配置服務(wù)的基本能力。這是我們這篇文章里要介紹的。
- sp_configure
- 和大多數(shù)服務(wù)器配置選項一樣,你可以使用sp_configure系統(tǒng)存儲過程來啟用或停用數(shù)據(jù)庫郵件。你指定“Database Mail XPs”選項(在sp_configure里的高級選項)為1來啟用數(shù)據(jù)庫郵件,0來停止數(shù)據(jù)庫郵件。
- 基于策略管理
- 你可以指定”@DatabaseMailEnabled“并設(shè)置值為True,然后添加這方面的配置到策略,并應(yīng)用策略到特定的SQL Server。如果你想管理多個服務(wù)器的話,這是從擴展性來說最好的選項(基于策略的管理自SQL Server 2008和以后版本都可用)。
使用數(shù)據(jù)庫郵件配置向?qū)韱⒂脭?shù)據(jù)庫郵件
在開始數(shù)據(jù)庫郵件前,使用SSMS連接到你的SQL Server本地實例,然后展開管理文件夾,右擊【數(shù)據(jù)庫郵件】。選擇【配置數(shù)據(jù)庫郵件】,數(shù)據(jù)庫郵件配置向?qū)?#xff0c;顯示向?qū)У慕榻B,點擊【下一步】,你會看到向?qū)Ю锏目捎眠x項,如插圖1所示。
插圖1——數(shù)據(jù)庫郵件配置向?qū)Аx擇配置任務(wù)
因為這是你第一次運行數(shù)據(jù)庫郵件配置向?qū)?#xff0c;你會需要保持這個選擇來配置數(shù)據(jù)庫郵件。點擊【下一步】,你會看到啟用數(shù)據(jù)庫郵件的對話框,如插圖2所示。
插圖2——是否啟用數(shù)據(jù)庫郵件?
還沒提到安全,你會需要是sysadmin服務(wù)器組成員才可以完成這個任務(wù)。選擇【是】,合適的sp_configure命令會代你運行。你會看到【新建配置文件】對話框。輸入配置文件名和描述,然后點擊【增加】按鈕進入SMTP賬號列表,如插圖3所示。
插圖3——新建數(shù)據(jù)庫郵件賬號
賬號名稱是寫給你看的,因此要使用一些有意義的名稱。郵件地址會顯示來自SQL Server的名稱。取個允許你專門發(fā)送SQL Server郵箱的名字更好。當(dāng)然,你也可以使用日常的郵箱。
服務(wù)器名稱是SMTP郵件服務(wù)地址(博主注:首先要保證你的郵件已經(jīng)啟用SMTP功能)。使用【基本身份認證】(用戶名要參考具體郵件服務(wù)器的要求)。
完成這些配置后,點擊【確定】來結(jié)束郵件賬號配置。你可以按照這個方法創(chuàng)建多個郵件賬號,如果第一個賬號發(fā)送失敗,第二個賬號會自動啟用。對于一個郵件配置可以擁有多個郵件賬號?,F(xiàn)在,我們切換回單個郵件賬號界面,點擊【確定】。你要設(shè)置你創(chuàng)建的賬號為【公共配置文件】(例如讓所有認證的數(shù)據(jù)庫郵件用戶使用這個郵件配置來發(fā)送郵件),你可以保持它為私有(你會關(guān)聯(lián)一個數(shù)據(jù)庫用戶來使用這個配置文件)。因為這是第一個配置文件,我們設(shè)置為公共配置(如插圖4所示)。
插圖4——設(shè)置數(shù)據(jù)庫配置為公共。
點擊【下一步】,你完成了初始數(shù)據(jù)庫配置的配置。可是,現(xiàn)在出現(xiàn)在你面前的是【配置系統(tǒng)參數(shù)】對話框,允許你修改數(shù)據(jù)庫郵件系統(tǒng)級的設(shè)置(如插圖5所示)。
插圖5:數(shù)據(jù)庫郵件系統(tǒng)參數(shù)
在這里你可以指定下列選項:
- 賬戶重試次數(shù):在給出的郵件配置里的賬號列表,切換到第二個賬號前,使用第一個郵件賬號嘗試失敗次數(shù)。
- 賬戶重試延遲時間:在每次嘗試連接并使用SMTP郵件賬號之間的等待時間(秒為單位)
- 最大文件大小(字節(jié)):使用數(shù)據(jù)庫郵件允許的最大附件大小。你可以把來自SQL Server的查詢結(jié)果通過郵件附件進行發(fā)送,因此你可能會希望它盡可能大。但郵件服務(wù)器上的附件大小設(shè)置會覆蓋這里的配置。
- 禁止的附件文件擴展名:數(shù)據(jù)庫郵件不能發(fā)送的擴展名列表。這主要用來保證你的郵件系統(tǒng)不會通過可執(zhí)行的或腳本來傳播病毒。當(dāng)然,你可以按需要添加自己或刪除自己SQL Server需要的文件擴展名。
- 數(shù)據(jù)庫郵件可執(zhí)行文件的最短生存期(秒):數(shù)據(jù)庫郵件進程啟動時有個額外開銷(因為它在外部運行,并不是數(shù)據(jù)庫引擎或SQL Server代理的一部分)。這個設(shè)置決定SQL Server代理使用數(shù)據(jù)庫郵件發(fā)送郵件后的持續(xù)運行時間。如果你經(jīng)常使用數(shù)據(jù)庫郵件,可以保持這個進程運行更長,可以讓數(shù)據(jù)庫郵件的啟動更短,因為SQL Server郵件需要重新查詢SQL Server并緩存內(nèi)部信息(例如賬號配置),發(fā)送郵件時,它們是必須的。
- 日志記錄級別:有三個記錄級別:普通、擴展、詳細。如果你在故障排除或想查看更多的數(shù)據(jù)庫郵件信息,可以設(shè)置記錄級別為詳細。你可以在SSMS里檢查數(shù)據(jù)庫郵件記錄級別(或者在msdb數(shù)據(jù)庫里的sysmail_event_log視圖里)。
現(xiàn)在的話,接受默認,點擊【下一步】完成【數(shù)據(jù)庫郵件配置向?qū)А?#xff08;如插圖6所示)
插圖6——完成數(shù)據(jù)庫郵件向?qū)?/p>
如果一切順利的話,你會看到如插圖7的結(jié)果,顯示已經(jīng)創(chuàng)建的配置和賬號,賬號與配置文件關(guān)聯(lián),配置文件是公共的。如果這里發(fā)生了錯誤,或者你需要修改郵件設(shè)置的配置,重新運行數(shù)據(jù)庫郵件配置向?qū)?#xff0c;在第一個對話框上(如插圖1所示),選擇第二個選項【管理數(shù)據(jù)庫郵件賬號和配置文件】,你可以修改所有輸入的信息,創(chuàng)建新的郵件配置或郵件賬號。
插圖7——向?qū)С晒?zhí)行所有的命令
下一步
一旦向?qū)瓿?#xff0c;有2個步驟可以確認你的數(shù)據(jù)庫郵件已經(jīng)成功配置,首先,你會想發(fā)送一個測試郵件。然后,你應(yīng)該檢查下日志來看看數(shù)據(jù)庫郵件記錄測試郵件發(fā)送的基本信息。
發(fā)送測試郵件
發(fā)送測試郵件,在SSMS里右擊【數(shù)據(jù)庫郵件】節(jié)點,在菜單選項里選擇【發(fā)送測試郵件】,你會看到如插圖8的對話框。
插圖8:發(fā)送測試郵件
如果郵件發(fā)送成功,點擊【發(fā)送測試電子郵件】按鈕后,出現(xiàn)的【數(shù)據(jù)庫郵件測試電子郵件】對話框上的【確定】按鈕。如果你不能收到郵件,點擊【疑難解答】按鈕,會出現(xiàn)數(shù)據(jù)庫郵件故障排除的幫助鏈接。對于SQL Sever 2008 R2有很多可用選項,如插圖9所示。選擇合適的癥狀,你可用按照向?qū)崾緛磉M行故障排除。
插圖9——數(shù)據(jù)庫郵件故障排除
如果一切順利,你會看到如插圖11所示的郵件信息。一旦配置成功,你可用使用郵件操作員,如第3篇文章所介紹的在SQL Server里發(fā)送郵件警報。
插圖10——來自SQL Server數(shù)據(jù)庫郵件的測試郵件
檢查數(shù)據(jù)庫郵件日志
檢查數(shù)據(jù)庫郵件日志,你要么直接查看msdb..sysmail_event_log視圖,或者在SSMS里右擊數(shù)據(jù)庫郵件,選擇【查看數(shù)據(jù)庫郵件日志】。你會看到標準日志文件查看器,只過濾顯示了數(shù)據(jù)庫郵件日志。如果你成功發(fā)送了郵件,你會看到數(shù)據(jù)庫郵件進程啟動。如果你有錯誤,你會看到對應(yīng)的錯誤信息,點擊信息會日志界面底部顯示關(guān)于錯誤的具體信息。
插圖11——日志文件查看器查看數(shù)據(jù)庫郵件日志
如果你還有困難,你可以在數(shù)據(jù)庫郵件里調(diào)整日志級別為詳細。有2個操作方法,一個是SSMS,右擊數(shù)據(jù)庫郵件,再次啟動配置向?qū)?#xff0c;選擇【查看或修改系統(tǒng)參數(shù)】,你會看到會插圖5一樣的界面,選擇【日志記錄級別】為【詳細】,點擊【下一步】來完成向?qū)?#xff0c;再次嘗試發(fā)送郵件。你會在數(shù)據(jù)庫郵件日志視圖里看到詳細日志信息。另一個就是通過msdb數(shù)據(jù)庫里系統(tǒng)存儲過程sysmail_configure_sp。
1 Select name from sys.all_objects下篇預(yù)告
如你所見,數(shù)據(jù)庫郵件非常簡單,一旦你有一個兼容SMTP的郵件服務(wù)器,你就可以和你的SQL Server進行交互,非常靈活。數(shù)據(jù)庫郵件有安全限制,允許你配置誰可以發(fā)送郵件(通過msdb里的DatabaseMailUserRole),也可以使用郵件配置來限制特定用戶。你可以使用SQL Server代理的數(shù)據(jù)庫郵件來發(fā)送警報來自動話SQL Server的管理。
現(xiàn)在你有作業(yè)、警報、操作員的基礎(chǔ),郵件也可以發(fā)送了,下篇我們來看看下SQL Server代理的錯誤日志,還有它如何幫助我們進行SQL Server代理的故障排除。
原文鏈接:http://www.sqlservercentral.com/articles/Stairway+Series/72455/
總結(jié)
以上是生活随笔為你收集整理的SQL Server代理(4/12):配置数据库邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山姆会员商店如何取消自动续费(全国哪个城
- 下一篇: 快手怎么一次取消点赞(快手短视频App快