SQL Server日常維護中難免會遇到作業失敗的情況。失敗后自然需要知道它失敗了,除了例行檢查可以發現出錯以外,有一個較實時的監控還是很有必要的。比較專業的監控系統比如SCOM雖然可以監控作業執行情況在出錯時進行報警,但對於DBA來說可能可定制性不高,最主要的是負責監控的人員在看到報警后一般都需要立刻聯系DBA來解決,對於一些重要性不高的作業失敗了,大半夜把你叫起來,感覺肯定是不爽的。SQL Server 本身支持發送數據庫郵件,結合發送郵件的功能,在作業失敗后將出錯情況通過郵件通知DBA,這樣對於了解作業執行是否異常幫助是很大的。
配置步驟如下
1.配置數據庫郵件
在管理節點下,找到“數據庫郵件”,右擊,選擇“配置數據庫郵件”
配置向導的“選擇配置任務”步驟,可以選擇第一項,這樣可以按向導步驟配置各項。
點擊“下一步"以后,如果之前沒有啟用數據庫郵件功能,會彈出對話框詢問是否啟用。要繼續下去,自然得選擇”是“了。
啟用數據庫郵件功能實際上是啟用了Database Mail XPs服務器設置
可以提前通過SQL語句來完成,如下:
- exec sp_configure 'show advanced options',1
- GO
- RECONFIGURE
- GO
- exec sp_configure 'Database Mail XPs',1
- GO
- RECONFIGURE
- GO
新建配置文件步驟,需要指定配置文件名,根據需要設置即可。說明不是必須的。
同時這一步必須添加一個SMTP賬號,用來登錄到郵件服務器發送郵件。點擊”添加“按鈕。
在新建數據庫郵件賬號對話框里,需要指定賬號名、電子郵件地址、服務器名稱,還要選擇身份驗證的方式。一般我們連接的郵件服務器都是需要通過用戶名和密碼的方式進行驗證,所以要選擇”基本身份驗證“,並填寫正確的用戶名、密碼以及確認密碼。
這樣就完成STMP賬號的添加了,點擊”下一步“繼續
在”管理配置文件安全性“步驟可以保持默認的設置,也可以根據實際安全性要求進行設置。
在”配置系統參數“步驟,按需要酌情設置。賬戶重試次數有必要設置一下,這樣在遇到郵件服務器短時間內無法連接的時候可以通過重試來盡量避免通知郵件收不到的情況發生。之后下一步完成向導就可以了。
配置完數據庫郵件以后,最好測試一下數據庫郵件工作是否正常。右擊”數據庫郵件“項選擇”發送測試電子郵件“。
收件人填寫為接收郵件的電子郵件地址。點擊發送測試電子郵件按鈕后,數據會嘗試發送郵件。稍等片刻我們檢查一下接受郵件的賬號是否收到了郵件。沒有收到就要檢查之前配置的郵件賬號信息是否正確了。
配置數據庫郵件通過SQL語句方式配置如下
- --創建配置文件
- exec msdb.dbo.sysmail_add_profile_sp
- @profile_name = 'MailConfigForJob',
- @description = '數據庫作業通知使用';
- --添加smtp郵件賬號
- exec msdb.dbo.sysmail_add_account_sp
- @account_name = 'MailAccountForJob',
- @description = '作業通知郵件賬號',
- @email_address = 'JobAlert@test.com',
- @mailserver_name='smtp.test.com',
- @port = 25,
- @username = 'jobalert',
- @password = 'userpassword';
- --將郵件賬號與配置文件進行關聯
- exec msdb.dbo.sysmail_add_profileaccount_sp
- @profile_name = 'MailConfigForJob',
- @account_name ='MailAccountForJob',
- @sequence_number = 1;
2.添加操作員
添加操作員的目的是用來指定接收郵件通知的接收人。
在SQL Server 代理下右擊”操作員“,選擇”新建操作員“
在新建操作員窗口,只需要指定姓名和電子郵件地址名稱即可。電子郵件名稱是指接收郵件的郵件地址。
創建操作員的SQL語句為
- exec msdb.dbo.sp_add_operator
- @name = N'JobMonitor',
- @email_address=N'jobmonitor';
3.設置作業的通知
假設要在一個已經存在的作業上設置郵件提醒,在作業屬性里先選中”通知“選項卡,在右側點擊”電子郵件“復選框,之后在第一個下拉列表中選擇之前創建的操作員”JobMonitor",后邊的“當作業失敗時”為默認選擇項,也可以改成“當作業成功時”或“當作業完成時”,這個根據實際需要而定。對於作業比較多的情況設置作業成功也接收郵件的話,要經常查看很多通知郵件,很容易造成視覺疲勞,有可能把失敗的郵件忽略掉。當然,有時候服務器異常導致作業沒有執行,是不會發送任何郵件的,如果完成時發送郵件的話可以確定作業已經執行了,突然有一天沒有收到郵件,那就得主動去檢查一下了。
設置通知的SQL語句為
- exec msdb.dbo.sp_update_job
- @job_name = 'test',
- @notify_level_email = 2,
- @notify_email_operator_name = N'JobMonitor';