【譯】第三篇 SQL Server代理警報和操做員

本篇文章是SQL Server代理系列的第三篇,詳細內容請參考原文html


正如這一系列的上一篇所述,SQL Server代理做業是由一系列的做業步驟組成,每一個步驟由一個獨立的類型去執行,除了步驟中執行的工做外,你可能想給DBA(或其餘人)發送消息告知做業執行成功/失敗。當系統遇到問題,好比性能問題,或者達到系統的閾值,你可能但願有信息發送。SQL Server代理提供建立警報的能力,能夠將消息以通知的形式發送到指定的操做員,以協助你處理這些任務。
SQL Server代理警報是什麼
SQL Server代理警報是對於數據庫系統上的某些條件的自動響應。警報能夠經過下列條件觸發:
->產生數據庫系統消息
->檢測到最低級別的系統錯誤
->SQL Server計數器達到指定閾值
->WMI查詢結果知足
一旦警報被觸發,警報中所定義的響應就會發生。響應多是運行一個特定的SQL Server代理做業,或者是通知一個或多個操做員。你還能夠選擇指定的錯誤文本包含到任何要發送的通知中。
SQL Server代理操做員是什麼
SQL Server代理操做員能夠簡單地看成一個電子郵件地址。它有其餘選項,如Net send地址,尋呼電子郵件名稱,事實上尋呼就是用來發送郵件的。
注意:「Net Send」仍然是SQL Server警報選項,但此功能不可用於實踐,官方已經不贊同使用,這意味着它將在將來版本的SQL Server中移除。警報惟一可行的選擇是經過電子郵件通知。
當定義一個操做員,你可使用操做員發送電子郵件(或經過電子郵件發送短信)來定義的電子郵件別名。電子郵件別名多是一個或多個待命處理系統問題的DBA組合。重要的提醒,你可能想使用升級操做,例如能夠將短信發送到手機。
建立操做員
爲了建立操做員,首先打開SSMS,在SQL Server代理下面導航到操做員。右擊操做員,而後選擇新建操做員,如圖3.1所示

圖3.1 新建操做員
圖3.1中,我已經指定的操做員的名稱和電子郵件名稱,確保點擊的「肯定」按鈕,不然這個操做員不會有警報。
當你選擇通知選項,你會看到一個已經分配給這個操做員的警報列表。由於這是新建立的操做員,因此圖3.2中列表是空的,點擊肯定,操做員就建立好了。

圖3.2 新建操做員的通知頁面
在一個操做系統,預計至少要存在兩個操做員。一個緊急系統通知(例如咱們剛纔建立的Server_Alerts操做員);一個分擔工做,用於SQL Server代理做業和/或普通的錯誤。
操做員固然也能夠用Transact-SQL定義。你能夠用sp_add_operator系統存儲過程來建立一個操做員。更多語法上的幫助,請查看聯機叢書。
注意:一個關於操做員的普通問題是如何發送警報給多人。你能夠經過郵件系統使用電子郵件分發列表,由於SQL Server代理只會發出警報給單一的操做員。所以你能夠給操做員定義一個分配表,列表上的每一個人將會收到相關的通知。
防故障操做員
防故障操做員使用於其餘操做員通知失敗的時候。有幾個可能的緣由致使這種失敗(例如,在你的郵件系統故障,咱們將在下一篇文章看到)。一旦你已經建立了一個或多個操做員就能夠定義防故障操做員。防故障操做員是一個指定爲最後接觸手段的操做員。
你能夠定義一個防故障操做員,在SQL Server代理屬性對話框(右鍵單擊SQL Server代理,選擇屬性),在警報系統頁面。勾選啓用防故障操做員,而後從列表中選擇你已定義的操做員,如圖3.3所示。當完成選擇後點擊「肯定」。注意:本頁上的選項的其他部分將在個人下一篇文章中數據庫郵件講解。

圖3.3 啓用防故障操做員
建立警報
如今咱們準備實際建立警報,這正如咱們前面看到的,警報是對於數據庫系統上的某些條件的自動響應。定義一個新的警報,導航到SQL Server代理->警報,右擊並選擇「新的警報」彈出新建警報對話框,如圖3.4所示。做爲第一個警報,咱們將建立一個警報以通知DBA任何系統級錯誤(嚴重性爲19或更高)。

圖3.4 新建警報
SQL Server事件警報
就如操做員,警報必須可以有任何警報發生。請注意,在這個例子中,「類型」選擇的是「SQL Server事件警報」。你也能夠選擇「SQL Server性能條件警報」,提供了可視化的SQL Server性能計數器用於與此關聯的實例。咱們將在下一節中看到一個性能條件警報。最後,有一個「WMI事件警報」,將容許你編寫Windows管理規範(WMI)查詢和響應他們的警報。
嚴重性的下拉菜單中列出全部與SQL Server相關的可能錯誤嚴重級別。在19級或以上的錯誤是很是嚴重的錯誤,可能須要DBA干預調查爲何發生一個嚴重的錯誤。
一旦你選定圖3.4中的選項,點擊響應看看能夠採起什麼樣的行動(如圖3.5所示)。你會看到,你能夠執行一個SQL Server代理做業,或通知操做員(例如,咱們上面定義的操做員)。在這個例子中,咱們選擇發送一封電子郵件給咱們的Severe_Alerts操做員。

圖3.5 新建警報響應頁面
你能夠切換到「選項」頁以對這個警報作一些有趣的選擇,如圖3.6所示。選擇警報錯誤文本發送方式,若是你想知道爲何警報被髮送給你(不然瞭解警報可能會有難度)。這一頁還容許您指定一個額外的通知消息,這個能夠用來在凌晨3點提醒你要醒了,或者做爲搜索字符串來查找SQL Server的郵件。若是隻是一個常見的報警條件,你能夠選擇使用默認的通知消息,徹底不必本身再補充。延遲選項指定你是否每次觸發警報獲得一個通知,或者是否一個「X」分鐘或秒數是足夠好。例子中,5分鐘的延遲設置,使您的電子郵件不會被相同的問題致使收件箱暴滿。

圖3.6 新建警報選項頁面
當你完成了對話框中的選擇,單擊「肯定」,你就建立了一個新的警報。
固然,你也能夠經過sp_add_alert系統存儲過程建立警報。咱們能夠在SSMS中將剛纔建立的警報生成腳本,如圖3.7所示。

圖3.7 警報腳本
警報豁免
你能夠指定某些錯誤信息在警報中永遠不發送。定義這樣的錯誤,你必須手動更新服務器上的註冊表。註冊表中的位置是在你的特定實例註冊表項,SQL Server代理文件夾下,你會發現一個名爲「NonAlertableErrors」,如圖3.8所示。默認狀況下,有兩個錯誤編號:1204(不能得到鎖)和4002(登陸失敗)。若是你須要這些錯誤信息的警報,你就得編輯註冊表項從列表中移除錯誤編號。相反,若是你不想收到某些錯誤信息的警報,你能夠在此列表中添加對應的錯誤編號。固然,一般編輯註冊表的時候要格外當心。

圖3.8 註冊表編輯NonAlertableErrors
性能條件警報
警報的第二種類型是性能條件警報。你能夠設置許多基於性能計數器的警報。不幸的是,你僅僅限於和SQL Server相關的計數器,但仍然容許你爲你的系統添加至關多的自動監測。例如,在下面的截圖中(圖3.9),在DBA_Monitor數據庫中的事務日誌超過90%的時候會收到一個警告。可參考圖3.4和圖3.5對警報進行設置,在響應頁面,你能夠執行一個SQL Server代理做業(增長日誌空間,或開始一個備份),或通知操做員(上面定義過的操做員)。在這個例子中,咱們選擇發送一封電子郵件給咱們的Severe_Alerts操做員。

圖3.9 性能條件警報
警報擴展
除了文章中建立的高嚴重程度的警報,你應該瞭解警報的其餘方面。在性能計數器和WMI查詢上設置警報是很是強大的。雖然只有SQL Server特定的性能計數器,沒有如CPU這類的系統計數器。然而,你仍然能夠設置警報,當SQL Server登陸數,或SQL Server內存,或I/O超過某個閾值時。
此外,當警報發生時自動執行一個做業意味着你能夠解決許多常見的錯誤,而不是每次都要人爲干預。
下一篇
在全部的SQL服務器系統至少要配置一個基本的警報。這將確保最嚴重的錯誤,一些通知發送到您的DBA團隊。固然,電子郵件警報依賴於SQL Server能夠發送電子郵件,因此下一篇文章將着重討論如何配置數據庫郵件。sql

相關文章
相關標籤/搜索