SQL Server 死鎖的告警監控

来源:http://www.cnblogs.com/kerrycode/archive/2017/10/24/7722350.html
-Advertisement-
Play Games

今天這篇文章總結一下如何監控SQL Server的死鎖,其實以前寫過MS SQL 監控錯誤日誌的告警信息,這篇文章著重介紹如何監控資料庫的死鎖,當然這篇文章不分析死鎖產生的原因、以及如何解決死鎖。死鎖(Dead Lock)的錯誤信息在sys.messages中的message_id為1205,可以使... ...


今天這篇文章總結一下如何監控SQL Server的死鎖,其實以前寫過MS SQL 監控錯誤日誌的告警信息,這篇文章著重介紹如何監控資料庫的死鎖,當然這篇文章不分析死鎖產生的原因、以及如何解決死鎖。死鎖(Dead Lock)的錯誤信息在sys.messages中的message_id1205,可以使用下麵SQL查看。

 

 

   SELECT * FROM sys.messages WHERE message_id=1205

 

 

那麼接下來,我們來設置一下死鎖(Dead Lock)告警吧, 如下所示,當然你可以使用UI界面設置。

 

 
USE [msdb]
GO
 
IF NOT EXISTS(SELECT 1 FROM msdb.dbo.syscategories WHERE NAME='DBA_MONITORING' AND category_class=2)
BEGIN
 
EXEC msdb.dbo.sp_add_category
    @class=N'ALERT',
    @type=N'NONE',
    @name=N'DBA_MONITORING' ;
 
END
GO
 
IF EXISTS(SELECT 1 FROM msdb.dbo.sysalerts WHERE name='SQL Server Dead Lock Detected')
BEGIN
    EXEC msdb.dbo.sp_delete_alert @name=N'SQL Server Dead Lock Detected';
END
GO
 
 
IF NOT EXISTS(SELECT 1 FROM msdb.dbo.sysalerts WHERE name='SQL Server Dead Lock Detected')
BEGIN
EXEC msdb.dbo.sp_add_alert @name=N'SQL Server Dead Lock Detected', 
        @message_id=1205, 
        @severity=0, 
        @enabled=1, 
        @delay_between_responses=0, 
        @include_event_description_in=1, 
        @category_name=N'DBA_MONITORING', 
        @job_id=N'00000000-0000-0000-0000-000000000000'
END
GO
 
IF NOT EXISTS ( SELECT  *
                FROM    msdb.dbo.sysnotifications
                WHERE   alert_id = ( SELECT id
                                     FROM   msdb.dbo.sysalerts
                                     WHERE  name = 'SQL Server Dead Lock Detected'
                                   ) )
    BEGIN
 
        EXEC msdb.dbo.sp_add_notification @alert_name = N'SQL Server Dead Lock Detected',
            @operator_name = N'YourSQLDba_Operator', @notification_method = 1;
    END;
GO

 

執行上面腳本後,就會在SQL Server的告警裡面新增一個名為SQL Server Dead Lock Detected'的告警,那麼現在是否OK了呢?當然不是,我們來測試驗證一下吧,首先準備測試的表和數據。

 

 

 

USE YourSQLDba;

GO

CREATE TABLE DEADLOCK1(ID INT DEFAULT(0));

CREATE TABLE DEADLOCK2(ID INT DEFAULT(0));

INSERT INTO DEADLOCK1 VALUES(1);

INSERT INTO DEADLOCK2 VALUES(1);

GO

 

 

 

 

如下所示,在兩個會話視窗執行下麵腳本,構造死鎖出現的場景。

 

 

--會話視窗1執行下麵SQL

BEGIN TRAN

  UPDATE DEADLOCK1 SET ID=ID+1;

  WAITFOR DELAY '00:00:20';

  SELECT * FROM DEADLOCK2

ROLLBACK TRAN;

 

 

EXEC master..sp_altermessage 1205, 'WITH_LOG', TRUE;

GO

 

 

 

--會話創建2執行下麵SQL

 

BEGIN TRAN

  UPDATE DEADLOCK2 SET ID=ID+1;

  WAITFOR DELAY '00:00:20';

  SELECT * FROM DEADLOCK1

 

ROLLBACK TRAN;

 

 

 

如下截圖所示,當死鎖出現後,那麼這個告警設置是否會發送郵件出來呢? 答案是否定的,你可以檢查告警的歷史情況,如下所示:

 

 

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

-Advertisement-
Play Games
更多相關文章
  • { //原始對象 let obj={ time:'2017-03-11', name:'net', _r:123 }; //(代理商)第一個參數代理對象,第二個參數真正代理的東西 let monitor=new Proxy(obj,{ // 攔截對象屬性的讀取 get(target,key){ re... ...
  • function testNumber(){ var yourinputValue=$("#yourinputId").val(); var reg = /^[1-9]\d*$/; alert(reg.test(yourinputValue)) } ...
  • 今天在看javascript入門經典-事件一章中看到了 this 和 event 兩種傳參形式。因為作為一個初級的前端開發人員平時只用過 this傳參,so很想弄清楚,this和event的區別是什麼,什麼情況下用什麼比較合適。 ...
  • 這個概念我大概是去年時候接觸到的吧,略略記錄了一下,沒有深入研究,恰逢最近秋招,在這裡寫一寫,順便加深自己的印象。 什麼是BFC? 頁面中的元素都隱含一個屬性Block Formatting Context(塊級格式化上下文) 簡稱BFC。 BFC有什麼用?如何開啟BFC?開啟BFC後會發生什麼? ...
  • 巨集定義,不一定放在PCH文件,可能放在一個.h文件,再用PCH包含進來。 ...
  • 在前面 的章節中講解了 語言中的數據類型、變數與常量的定義。不瞭解請參見前面的內容: 1. "Kotlin從無到有系列之數據類型介紹" 。 2. "Kotlin從無到有系列之變數、常量、註釋的使用" 。 下麵詳細為大家講解 中的控制語句使用。不得不說其和 中還是有很多不一樣的地方。 目錄 一、if語 ...
  • 最近新項目用到了Protobuf來儲存數據,安裝時遇到了不少坑,網上也有很多把Protobuf集成到iOS系統上但是坑很多 下邊總結一下安裝流程: 查看官方文檔源碼在 https://github.com/google/protobuf , 如果不想自己編譯獲得最新版本,則可以下載官方編譯好的各個平 ...
  • 現在有個需求, 要求編寫oracle存儲過程生成Excel文件到指定目錄, 但是oracle自己的API貌似不太給力, 所以只能通過另一種更強大的語言來實現了 ——Java。有一個Java框架叫POI,處理Excel起來非常好用,現在我把過程記錄下來: 一、下載POI的jar包 我的測試資料庫的版本 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...