需求描述
在生產環境中,大部分情況下需要有自己的運維體制,包括自己健康狀態的檢測等。如果發生異常,需要提前預警的,可以以發郵件告知,郵件作為一種非常便利的預警實現方式,在及時性和易用性方面也有着不可替代的優點。
所以,在本篇中將詳細的分析下在SQL Server中郵件通知功能及使用方式等。 整個事件的核心就是配置郵件服務,這部分需要一個郵件賬戶以及相應的郵件服務器。下面以QQ郵件為例進行說明。
一、郵件服務設置
1、設置郵件服務器
郵箱設置-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務
開啟POP3/SMTP服務,點擊開始,然后點擊下方的【生成授權碼】,會提示發送短信,然后獲得的授權碼就是數據庫發送郵件帳號的密碼。
2、配置數據庫郵件
2.1 連接上數據庫,管理-數據庫郵件-右鍵-配置數據庫郵件
2.2 在選擇配置任務中,如果是新增選擇【通過執行以下任務來安裝數據庫郵件】,如果是修改,可選擇【管理數據庫郵件賬戶和配置文件】
2.3 配置SMTP賬戶,如果已有SMTP賬戶,可在下方列表中看到;如果沒有,點擊添加即可。
2.4 新增數據庫郵件賬戶
a. 賬戶名:可根據實際情況新增
b. 電子郵件地址:開通POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務的郵箱
c. 顯示名稱:可根據實際情況新增
d. 服務器名稱:如果電子郵件地址是QQ郵箱,smtp.qq.com。
e. 此服務器要求安全連接(SSL),打勾。
f. 基本身份驗證:用戶名為電子郵箱地址;密碼為授權碼。
2.5 錄入完成后,可看到smtp賬戶列表。
2.6 接下來需要選擇安全公共配置,選中剛才配置的文件名,然后后面默認為配置文件,建議選“否”,可根據實際情況配置。
2.7 默認配置文件選“否”后,可根據實際情況修改系統參數。
3、測試數據庫郵件。
3.1 在數據庫界面測試,如下圖
在收件人處輸入收件人郵箱即可。
3.2 通過SQL腳本測試。
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Test', --配置文件名稱
@recipients = '123@QQ.com', --收件email地址
@subject = '你好', --郵件主題
@body = '…' --郵件正文內容
二、實現JOB任務運行狀態的檢測
使用SQL Server時,很多情況下都需要自定義Job進行部分功能的實現,而大部分時間是采取凌晨或者非業務期進行工作。
因而Job的運行結果的檢測便形成了一個需要跟蹤的問題,比如有時候N個Job的運行,只有幾個出現問題,並且不確定的此Job發生在那個機器上,所以自動化運維的重要性就不言而喻了。
對於上面問題的解決,SQL Server提供了很簡單的配置便可以實現。
1、定義操作員
備注:
a. 姓名:操作員的姓名,可以是別名。
b. 電子郵件名稱:郵箱的地址。
c. 尋呼值班計划:可根據實際情況設置時間
2、新建警報:定義警報屬性等。
備注:
a. 名稱:在JOB屬性設置時會用到。
b. 數據庫名稱
這里面的嚴重性選項其實是一個很重要的功能,一些簡單的問題警告有時候是不需要及時關注的,或者說不需要暫時處理的。但是有些問題則需要里面去解決,比如服務器宕等。
備注
a. 執行作業:如果有多個作業的話,需選擇具體的作業;如新建,可點擊新建作業按鈕。
b. 通知操作員:選擇需通知的操作員,可多個。
3、設置SQL Server代理,在屬性中選擇警報系統。
備注:
a. 選擇是否啟用配置文件,郵件系統選擇了數據庫郵件,郵件配置文件可選擇具體的配置。
b. 啟用防故障操作員
4、新建作業
5、運行結果
SQL Server數據功能還是很強大的,這里簡單實現了發郵件的功能,當時還可以靈活運用。