SQL Server中如何自动抓取阻塞

news2024/11/18 3:40:10

背景

    当发数据库生阻塞时,可以通过SQL语句来获取当前阻塞的会话情况,可以得到下面的信息

    说明:会话55阻塞了会话53。两个会话都执行了update test set fid=10 where fid=0。

    但我们也经常碰到客户生产环境出现阻塞,由于不会抓取或者没有及时抓取,导致问题发生后,由于没有相关的信息,导致问题不能定位的问题。

    为了能够保留问题发生的现场,实际上可以通过SQL Server的扩展事件来实现自动抓取。

部署方式

    前提

    由于SQL SERVER对阻塞的跟踪报告事件默认是禁用的,需要通过执行下面的SQL语句开启。

        EXEC sp_configure 'show advanced options', 1;  

        GO  

        RECONFIGURE;  

        GO  

        EXEC sp_configure 'blocked process threshold', 10;  

        GO  

        RECONFIGURE;  

        GO

        EXEC sp_configure 'blocked process threshold'

    执行后,应该看到下面的结果,表示修改成功。

      

    配置

  打开Microsoft SQL SERVER Management Studio,点击\扩展事件\会话

        

  • 在会话节点,按右键选择【新建会话】

        

        输入会话名称

        

    并且勾选,来保证服务器启动时,自动启动扩展事件。

   

  • 选择blocked_process_report事件

    

    点【确认】后,可以看到新建立的【阻塞】事件会话

  

    启动会话

        选择【阻塞】事件会话,按右键弹出菜单,选择【启动会话】

       

监控会话

        启动会话后,发生过阻塞后,就可以通过【监控实时数据】来查看数据了

        

查看监控结果

        点击阻塞的记录,双击字段为blocked_process的值列,就可以看到通过脚本抓到的类似的阻塞会话详细信息。

       

      

问题

    但,这种方式抓取,从实际运行情况来看,当阻塞的会话超过2个时,记录的信息的会话不完整,存在丢失的问题,需要注意。

    打开一个新的会话,同样执行update test set fid=10 where fid=0,用语句查询时,结果如下:

    

    表示会话55阻塞了会话53,会话53阻塞了会话73。

但此时扩展事件抓取的数据,丢失了会话55的信息。只有会话53阻塞会话73的记录。

   

• 查询阻塞的SQL

SELECT t1.resource_type AS [锁类型], DB_NAME(resource_database_id) AS [数据库名],

t1.resource_associated_entity_id AS [阻塞资源对象],

t1.resource_description as [资源描述信息], t1.request_mode AS [请求的锁],

t1.request_session_id AS [等待会话], t2.wait_duration_ms AS [等待时间],      

(SELECT [text] FROM sys.dm_exec_requests AS r WITH (NOLOCK)                      

    CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle])

   WHERE r.session_id = t1.request_session_id

) AS [等待会话执行的批SQL],

(SELECT SUBSTRING(qt.[text],r.statement_start_offset/2,

        (CASE WHEN r.statement_end_offset = -1

        THEN LEN(CONVERT(nvarchar(max), qt.[text])) * 2

        ELSE r.statement_end_offset END )/2)

    FROM sys.dm_exec_requests AS r WITH (NOLOCK)

    CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt

    WHERE r.session_id = t1.request_session_id

) AS [等待会话执行的SQL],                    

t2.blocking_session_id AS [阻塞会话],                                        

(SELECT [text] FROM sys.sysprocesses AS p                                      

    CROSS APPLY sys.dm_exec_sql_text(p.[sql_handle])

    WHERE p.spid = t2.blocking_session_id

) AS [阻塞会话执行的批SQL]

FROM sys.dm_tran_locks AS t1 WITH (NOLOCK)

INNER JOIN sys.dm_os_waiting_tasks AS t2 WITH (NOLOCK)

ON t1.lock_owner_address = t2.resource_address OPTION (RECOMPILE);

• blocked-process-report事件说明

    https://learn.microsoft.com/en-us/sql/relational-databases/event-classes/blocked-process-report-event-class?view=sql-server-ver16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8实现任意目录下命令行训练

问题 当你使用YOLOv8命令行训练模型的时候,如果当前执行的目录下没有相关的预训练模型文件,YOLOv8就会自动下载模型权重文件。这个是一个正常操作,但是你还会发现,当你在参数model中指定已有的,在其他目录下的预训练模…

实际案例:某日化集团主数据建设项目

一、建设背景1. 背景分析当前,该日化企业集团的主数据尚处于分散状态,分布于各业务系统中,缺乏一套专业的主数据管理系统进行统一管理。因此,数据无法在全集团范围内共享使用,且在业务端到端的流程拉通时,数…

WPS关闭后,进程依然在后台运行的解决办法

问题 wps启动后 在启动wps后,什么都不做,打开进程管理器,发现居然运行了3个wps进程: win10只会显示wps进程: win11显示比较准确: 关闭后 在关闭wps,再去任务管理器查看,发现在…

游戏开发设计模式之策略模式

目录 策略模式在游戏开发中的具体应用案例有哪些? 如何在Unity中实现策略模式以优化角色行为和AI策略? 策略模式与其他设计模式(如观察者模式、状态模式)在游戏开发中的比较优势是什么? 策略模式的优势 观察者模式…

基于SpringBoot的闲一品交易平台

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 Java技术 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 管理员…

【手撕OJ题】——160. 相交链表

目录 🕒 题目⌛ 方法① - 遍历记录链表长度⌛ 方法② - 双指针 🕒 题目 🔎 160. 相交链表【难度:简单🟢】 🔎 面试题 02.07. 链表相交 🔎 剑指 Offer 52. 两个链表的第一个公共节点 给你两个单…

hadoop集成spark(spark on yarn)

文章目录 hadoop集成spark(spark on yarn)下载spark软件包spark文件设置spark-env.shworkers 环境变量设置发送spark到其余机器启动spark hadoop集成spark(spark on yarn) 在hadoop搭建完成的前提下,集成spark&#x…

【面试题系列Vue02】Vue Router 路由都有哪些模式?各模式之间有什么区别?

官方解析 Vue Router 路由有三种模式: hash 模式:使⽤ URL 中的 hash(即 # 后面的内容)来作为路由路径。 在这种模式下,页面不会重新加载,只会更新 hash 值,并触发路由变化,从而渲…

c语言杂谈系列:模拟虚函数

从整体来看&#xff0c;笔者的做法与之前的模拟多态十分相似&#xff0c;毕竟c多态的实现与虚函数密切相关 废话少说&#xff0c;see my code&#xff1a; kernel.c#include "kernel.h" #include <stdio.h>void shape_draw(struct shape_t* obj) {/* Call dr…

气膜粮仓:卓越的抗风雪能力与高性能材料—轻空间

在粮食储存领域&#xff0c;气膜粮仓以其卓越的抗风雪能力和高性能材料成为了现代农业的首选。其独特的设计和先进的材料使其在各种极端天气条件下依然能够保证粮食的安全和品质。 强抗风雪能力&#xff0c;保障粮仓安全 气膜粮仓采用了创新的结构设计&#xff0c;能够有效抵御…

Selenium + Python 自动化测试19(补充-读取各种文件数据操作)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了数据驱动测试中如何完成重复的测试实例&#xff0c;今天我们补充一些读取各种文件的方法。 本篇文章我们讨论一下如何使用读取txt、CSV、Excel文件&#xff0…

burpsuite xssValidator插件(xss插件)

安装 1. 商城安装插件 2. 安装环境 Download PhantomJShttps://phantomjs.org/download.htmlGitHub - NetSPI/xssValidator: This is a burp intruder extender that is designed for automation and validation of XSS

halcon1

Halcon安装&#xff1a;halcon介绍&#xff1a; 德国MVtec公司开发的一套完善的标准的机器视觉算法包。底层功能算法多&#xff0c;运算性能快。halcon不能提供相应的界面编程需求&#xff0c;需要和vs一起才能构成一套完整软件。 软件界面 halcon数据类型 Halcon的数据类型主…

Hugo博客搭建

Hugo 构建 Hugo 安装 下载 安装包hugo version 查看是否安装成功 生成站点基础框架 进入自己指定文件夹下执行 hugo new site solejay-blog创建仓库 cd solejay-blog git init主题配置 进入 Hugo 主题页面 选择主题并下载 个人喜欢的主题&#xff1a;meme、newsroom、gal…

mac安装java17(jdk17)

1. 下载jdk17 官网下载&#xff1a;https://www.oracle.com/java/technologies/downloads 2. 直接安装 安装完后目录会存放在下面目录下 /Library/Java/JavaVirtualMachines 111111deMBP JavaVirtualMachines % ls jdk-11.0.227 jdk-17.jdk 3. 如果你已经安装过java&#…

【MobaXterm】查找输出结果的关键字

要求&#xff1a; 在MobaXterm终端的输出结果 查找关键字 解决&#xff1a; 菜单栏终端->在终端中查找 Terminal -> Find in terminal

智慧水务项目(七)vscode 远程连接ubuntu 20.04 服务器,调试pyscada,踩坑多多

一、说明 以前用过pycharm&#xff0c;远程连接还可以&#xff0c;但是vscode用以前还可以&#xff0c;就用它开发python了&#xff0c;想搞个远程&#xff0c;源码直接放服务器上&#xff0c;能远程调试&#xff0c;其实也很方便的&#xff0c;结果第一次还成功了&#xff0c;…

【机器翻译方向】数据集合集!

本文将为您介绍经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 QUAK 发布方&#xff1a; Upstage高丽大学 发布时间&#xff1a; 2022 韩英合成机器翻译质量预测数据 (韩英神经机器翻译的一个合成质量估计数据集&#xff0c;QUAK) 是指韩语句子和…

erlang学习:erlang学习:书上案例22.6练习题3

初步实现了书上案例第二&#xff0c;三问的要求&#xff0c;对输出结果有部分偏差&#xff0c;没有实现对已完成任务状态的记录&#xff0c;因此已完成任务输出无论如何都是0&#xff0c;明天会在record中加一个字段进行已完成任务状态的记录 (2) 添加一个名为job_centre:stati…

业绩回暖的小鹏,何时能够迈过月销2万的“及格线”?

古罗马哲学家塞涅卡在他的《论天命》中曾写下这么一句话&#xff1a;“英勇的士兵能够从战斗的胜利中获得喜悦&#xff0c;而伟大的人能够从逆境中得到欢乐。” 对于企业来说&#xff0c;身处逆境不一定能得到欢乐&#xff0c;但是走出逆境一定振奋人心。 8月20日&#xff0c…