SQL Server代理(3/12):代理警報和操作員

来源:http://www.cnblogs.com/woodytu/archive/2016/01/23/5152117.html
-Advertisement-
Play Games

SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。如我們在這個系列的文章里所見,SQL Server代理作業由一些列的作業步驟組成,每個步驟是需要執行的不同類型工作。另外在每個步驟里要進行的工作...


SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。


如我們在這個系列的文章里所見,SQL Server代理作業由一些列的作業步驟組成,每個步驟是需要執行的不同類型工作。另外在每個步驟里要進行的工作,你會發送特定作業成功或失敗的消息給DBA(或其他人) 。當系統發生故障時,特定性能問題發生或某個閥值達到系統值時,你也會對這些消息感興趣。SQL Server代理提供創建警報的能力,可以發消息給指定的操作員作為提胸,來幫助你處理這些問題。

什麼是SQL Server代理警報?

SQL Server警報是在你的SQL Server系統上,對特定條件的自動響應。警報可以由下列條件觸發:

  • SQL Server系統信息生成
  • 最低程度的系統錯誤偵測到
  • 在SQL Server性能計數器達到特定閥值
  • 符合WMI查詢結果

一旦警報觸發,在警報里定義的響應會發生。這些響應要麼執行特定的SQL Server代理作業,要麼通知一個或多個操作員。你也有可以指定觸發錯誤信息的選項,包括在任何發送的提醒里。

什麼是SQL Server代理操作員?

SQL Server代理操作可以是簡單的一個郵箱地址。也有其他選項,例如一個net send地址或一個“尋呼機”郵件名,但事實上“尋呼機”選項直接作為郵件發送。

備註:

對於SQL Server警報,”Net Send“還是個選項,但實際上這個功能並不用,已經正式從產品里剝離,意味著在後續的SQL Server版本里移除。對於警報唯一可行的選項是通過郵件提醒。

當一個操作員被定義,你可以使用操作員來接收郵件(例如通過郵件發送文本信息)到定義的郵件別名。那個郵件別名會可能是一組或更多為系統問題待命的DBA。對於重要的提醒,你會想要使用升級的操作員,例如直接發簡訊給手機。

創建一個操作員

創建一個操作員,打開SSMS,在SQL Server代理文件夾下找到操作員。右擊【操作員】,選擇【新建操作員】,你會打開如插圖1的界面。

插圖1——新建操作員對話框

如你在插圖1所見,我對操作員已指定了一個姓名,還有郵件地址。請確保已啟用已經選擇,不然對這個操作員的任何警報都不會發生。

當你選擇了【通知】頁,我們可以看到已經分配給這個操作員的警報列表。對新建的操作員,如插圖2所示,列表是空的。點擊【確定】,操作員已經創建。

插圖2——新建操作員通知頁

在運行的系統上,我們會期望至少存在2個操作員——一個作為緊急系統提醒(例如,我們剛定義的伺服器警報操作員),另一個在SQL Server代理作業或常規錯誤上你會有的各自分工。

操作員當然也可以通過T-SQL腳本來創建。你可以使用sp_add_operator系統存儲過程來創建操作員。語法上的幫助,可以參考線上幫助:https://msdn.microsoft.com/zh-cn/library/ms186747.aspx

備註:

關於操作員一個常見的問題是你如何發送警報給多個人。你實現這個的方法是通過你的郵件系統的郵件發佈列表,因為SQL Server代理只能給單個操作員發送警報。因此你在SQL Server代理可以定義操作員為發佈列表,那麼在列表上的每個人都會收到相關的警報。

防故障(Fail-Safe)操作員

防故障操作員定義為:如果所有其他操作員提醒失敗而啟用的。這樣的失敗有很多的可能(例如,你郵件系統出問題了,這個在下篇文章我們會談到),但在任何情況下有一個防故障操作員比較好。一旦你定義一個或多個操作員,你就定義防故障操作員。防故障操作員是你指定的最後一個聯繫的。

你在SQL Server代理屬性對話框里定義防故障安全員(右擊SQL Server代理,選擇屬性),在警報系統頁。勾選啟用防故障操作員,然後從列表裡選擇系統已經定義的操作員,如插圖3所示。當完成選擇後,點擊【確定】。註意這頁的其它選項會在下一篇的資料庫郵件里談到。

插圖3——配置防故障操作員

創建警報

一些就緒,現在我們可以開始創建警報,我們剛纔已經提過,是在你的SQL Server系統里對於一些情況的自動響應。為了定義一個新的警報,在SSMS里點擊SQL Server代理文件夾,然後點擊【警報】文件夾,右擊並選擇【新建警報】打開新建警報對話框。你會看到如插圖4的對話框。對於在系統上的第一個警報,我們創建一個提醒DBA任何系統錯誤的警報(嚴重級別19或更高)。

插圖4——創建新的警報

SQL Server事件警報

和操作員一樣,警報必須啟用才會工作。註意在這個例子里,警報的”類型“是”SQL Server事件警報“。你也可以選擇”SQL Server 性能條件警報“,它會提供對於關聯的SQL Server實例,會看到很多SQL Server特定的性能計數器。在下一部分,我們會看到一個性能條件警報。最後,還有一個”WMI事件警報“,允許你寫WMI查詢並用警報響應它們。關於WMI你可以在線上幫助里進一步學習:https://msdn.microsoft.com/en-us/library/aa394582%28v=VS.85%29.aspx

在新建警報對話框里的下拉框里的嚴重級別隻是對於SQL Server所有可能錯誤的可用嚴重級別(查看RAISERROR命令文檔來瞭解更多:https://msdn.microsoft.com/zh-cn/library/ms178592.aspx )這些在19或更高級別的錯誤,需要DBA干預調查為什麼會發生這個級別的錯誤。

一旦你選擇瞭如插圖4所示界面的選項,點擊【響應】來查看對這個警報可以採取的行動(如插圖5所示)。你會可能到你可以執行一個SQL Server代理作業,或通知一個操作員(例如,我們剛纔定義的操作員)。在這個例子里,我們選擇給我們的”伺服器警報“發送一個郵件,當警報發生的時候。

插圖5——新建警報響應

選擇想要的操作員後,你可以切換到【選項】頁看下對一個這個警報一些有趣的選擇,如插圖6所示。選擇包含警告信息的選項,如果你想知道為什麼這個警報被髮送(不然的話很難理解警報為什麼會發送)。這個頁面也允許你指定額外的提醒信息,非常用於在早上3點提醒你,為什麼你會因這個信息而醒來,或作為幫助的搜素字元,當查看來子SQL Server的郵件時。如果這個是普通的警報條件,你可以只選擇預設提醒信息不需要額外你專有的備註。

延遲選項用來指定當警報觸發時,是否需要重覆提醒,可以指定幾分鐘或幾秒。在這個例子里,5分鐘的延遲已經設置,因此你的郵箱收件箱會持續收到一些列的郵件,所有都提示同樣的問題。

插圖6——新建報警選項

當你完成對這個對話框的選擇,點擊【確定】來創建新的警報。

當然你也可以通過sp_add_alert的系統存儲過程來創建。關於這個存儲過程的文檔在這裡:https://msdn.microsoft.com/zh-cn/library/ms189531.aspx 或者直接從SSMS里創建,如插圖7所示。

插圖7——通過腳本新建一個警報

警報條款

有意思的是你可以指定特定的錯誤信息從不觸發。為了定義這樣的錯誤,你必須人為更新伺服器上的註冊表。註冊表是你特定實例上的。在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER下,你會找到SQLServerAgent,如插圖8所示。

插圖8:註冊表編輯器配置NonAlertableErrors

預設情況下,錯誤號是1204(不能獲得鎖)和4002(登錄失敗)。如果你真的想要這些錯誤號的警報,你會需要編輯下這個鍵值,從列表裡移除這些數字。相反的,你可以增加額外的從不警告錯誤號,你可以加這些錯誤號到列表。

當然,當你編輯註冊表時,這些不正常的警告號你要特別仔細。

性能條件警報

警報的第2個類型是 SQL Server性能條件警報。你可以給予性能計數器配置很多種類的警報。遺憾的是,你只能設置SQL Server的計數器,但這已經能讓你自動監控你的系統。例如,在插圖9里,當AdvantureWorks資料庫的事務日誌超過90%滿時,你後收到警告的警報。一但你選擇如插圖4的選項,點擊【響應】頁來配置對這個警報對應採取的行動(如插圖5所示)。你會看到你可以執行SQL Server代理作業(例如剛纔提到的日誌空間增長,或開始備份資料庫),或提醒對應的操作員(例如我們剛纔定義的操作員)。在這個例子里,當警報觸發的時候,我們選擇給“伺服器警報”操作發送郵件。

插圖9:性能條件警報

警報系統進階

除了這篇文章里創建的高嚴重級別的警報,你應該研究下警報的其他方面。在性能計數器和WMI查詢上設置警報功能就非常強大。當然這裡只限制SQL Server特定的計數器,沒有例如CPU這樣的系統計數器。這個要註意,你還是設置這樣的警報,當SQL Server登錄到特定的閾值,或達到SQL Server特定的記憶體條件,或當超過I/O閾值時。

另外,當警報觸發時可以執行作業意味著你可以通過自動化操作修正很多常規錯誤,而不需要每次都人為干預錯誤發生。對於要執行的作業沒有特定的要求:任何SQL Server代理作業都會被調用。

下篇預告

在所有的SQL Server系統中至少要配置一個操作員。這會保證對於大多數嚴重錯誤,一些特定的提醒會發給你的DBA團隊。當然,發送郵件警報的話需要SQL Server能發送郵件警報,因此我們的下篇文章會專門談如何配置資料庫郵件。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android實現自定義對話框效果:核心代碼:package com.example.diydialog;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import androi...
  • 通常代理的使用需要以下幾個步驟: 1、制定協議。協議可以在委托對象的.h中聲明,也可以在單獨的.h中聲明。制定協議後,在協議中聲明需要代理對象來實現的方法。 2、設置代理屬性。制定協議後需要為委托對象設置一個代理屬性,代理屬性的作用是存儲委托對象的代理對象。具體格式如下:@property (no....
  • 菜單滾動視圖也是在項目開發過程中比較常用到的功能,先直接看效果圖實現的效果如下:當菜單個數的總長度超過一個屏寬度就計算每一個的文字寬度,若沒有則只進行一個屏平分,點擊菜單項時,滾動的視圖位置會隨著調整;下麵將會把代碼貼出來;1:控制器.h文件的內容//// myScrollerViewContro....
  • 一,效果圖。二,工程圖。三,代碼。RootViewController.h#import @interface RootViewController : UIViewController{ UIScrollView *scoreView;}@endRootViewController.m#im...
  • 參考:http://blog.csdn.net/qq418716640/article/details/8508973http://www.cnblogs.com/mengdd/p/3335508.html效果:一個手指實現(所有手勢事件)和(部分事件的);A. 所有手勢activity_main....
  • 今天工作中遇到特殊的一個任務,就是將兩個自增列值的進行對調變更。SQL Server 平臺修改自增列值由於之前處理過sql server資料庫的遷移工作,嘗試過其自增列值的變更,但是通過SQL 語句修改自增列值,是嚴格不允許的,直接報錯(無法更新標識列 ’自增列名稱‘)。sql server我測試是...
  • 一、下載·安裝·啟動 學習mongoDB第一步下載安裝,度娘有教程不詳細解釋,說一下重要的點。 1 解壓安裝包後創建資料庫文件的存放位置,例如:d:/mongodb/data/db; 2 啟動:D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db;...
  • 最近整理Redis,對sentinel有了更深入的理解,特地總結如下1.主從Redis主從redis實際上是一種主備模式,即主redis宕機後,可以切換從redis繼續提供服務。 缺點: 1.人為關註Master是否宕機 2.無法完成自動切換主從 3.從節點的功能未被充分利用主從...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...