当前位置: 首页 > news >正文

SQL死锁进程内容查询语句

1.方式1

SELECT   object_name(A.resource_associated_entity_id) as TABLENAME, A.request_session_id AS SPID,DB_NAME(B.dbid) AS DBName,B.blocked,B.dbid,B.program_name,B.waitresource,B.lastwaittype,B.loginame,B.hostname,B.login_time,B.last_batch--,B.*
FROM  sys.dm_tran_locks  A  ,sys.sysprocesses B
WHERE resource_type = 'OBJECT' AND request_session_id =B.spid  AND blocked >0

在这里插入图片描述

2.方式2

 SELECT spid, blocked,sp.dbid, DB_NAME(sp.dbid) AS DBName, object_name(A.resource_associated_entity_id) as TABLENAME,program_name,waitresource,lastwaittype,sp.loginame,sp.hostname,a.[Text] AS [TextData],SUBSTRING (A. TEXT,sp.stmt_start / 2,(CASE WHEN sp.stmt_end = - 1 THEN DATALENGTH (A. TEXT) ELSE sp.stmt_end END - sp.stmt_start) / 2) AS [current_cmd] ,object_name(C.resource_associated_entity_id) as TABLENAMEFROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A ,sys.dm_tran_locks CWHERE spid > 50  AND blocked >0   AND request_session_id =spid AND resource_type = 'OBJECT' ORDER BY blocked DESC,DB_NAME(sp.dbid) ASC,a.[text];

在这里插入图片描述

3.建立定时LOG记录,避免发生的时候无法抓取

--建立LOG表
CREATE TABLE A_LOCK_LOG		                       
(login_time  DATETIME ,last_batch  DATETIME,spid INT, blocked INT,TABLENAME  VARCHAR(6000),dbid  INT,DBName VARCHAR(6000),program_name VARCHAR(6000),waitresource VARCHAR(6000),lastwaittype VARCHAR(6000),loginame VARCHAR(6000),hostname VARCHAR(6000),TextData VARCHAR(6000),current_cmd VARCHAR(6000),CREATION_DATE		DATETIME	DEFAULT GETDATE()-- 创建时间(派令日期)
);
--建立定时作业的进行记录资料
INSERT INTO A_LOCK_LOG(login_time,last_batch,spid,blocked,TABLENAME,dbid,DBName,program_name,waitresource,lastwaittype,loginame,hostname,TextData,current_cmd)SELECT login_time,last_batch,spid, blocked,object_name(C.resource_associated_entity_id) as TABLENAME,sp.dbid, DB_NAME(sp.dbid) AS DBName, program_name,waitresource,lastwaittype,sp.loginame,sp.hostname,a.[Text] AS [TextData],SUBSTRING ( A. TEXT,sp.stmt_start / 2,(CASE WHEN sp.stmt_end = - 1 THEN DATALENGTH (A. TEXT) ELSE sp.stmt_end END - sp.stmt_start) / 2) AS [current_cmd] FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A ,sys.dm_tran_locks CWHERE spid > 50  AND blocked >0   AND request_session_id =spid AND resource_type = 'OBJECT' ORDER BY blocked DESC,DB_NAME(sp.dbid) ASC,a.[text];

在这里插入图片描述
4.模拟上锁机制

ALTER PROCEDURE [dbo].[Test]--@ERR_NO     INT              OUTPUT,@ERR_DESC   NVARCHAR(4000)   OUTPUTAS
BEGINSET TRANSACTION ISOLATION LEVEL SERIALIZABLE; -- 设置事务隔离级别为 SerializableBEGIN TRANSACTION;-- 锁定目标表SELECT * FROM 表名 WITH (TABLOCKX, HOLDLOCK); -- 使用 TABLOCKX 和 HOLDLOCK 提示锁定表,并保持锁定-- 模拟长期锁定WAITFOR DELAY '00:10:00'; -- 等待10分钟COMMIT;
END

在这里插入图片描述

http://www.lryc.cn/news/172634.html

相关文章:

  • Ubuntu 20.04中Nightingale二进制部署
  • 深入探讨Java面试中内存泄漏:如何识别、预防和解决
  • win10 安装.net framework 3.5,错误代码0x8024401C
  • 杂记 | Langchain中few-shot提示词模板的使用(给提示词添加示例)
  • SVN -基础
  • MySQL基础终端命令与Python简单操作MySQL
  • 编译原理.龙书学习1
  • anaconda安装完成之后输入conda -V没有反应
  • netty报文解析之粘包半包问题
  • EasyCode整合mybatis-plus的配置
  • 实施预测性维护解决方案的挑战及PreMaint的应对方法
  • 1. js中let、var、const定义变量区别与方式
  • 【STM32学习】I2C通信协议 | OLED屏
  • Nvme Spec 第一章节学习
  • 第一章:最新版零基础学习 PYTHON 教程(第九节 - Python 语句中的 – 多行语句)
  • kafka 3.0 离线安装
  • MySQL数据库入门到精通2--基础篇(函数,约束,多表查询,事务)
  • c-数据在内存中的存储-day7
  • 3D大模型如何轻量化?试试HOOPS Communicator,轻松读取10G超大模型!
  • go并发操作且限制数量
  • AI深度学习-卷积神经网络000
  • 网站有反爬机制就爬不了数据?那是你不会【反】反爬
  • 2023华为杯研究生数学建模C题分析
  • 第三天:实现网络编程基于tcp/udp协议在Ubuntu与gec6818开发板之间双向通信
  • 【MediaSoup---源码篇】(三)Transport
  • 爱分析《商业智能最佳实践案例》
  • golang:context
  • 探讨代理IP与Socks5代理在跨界电商中的网络安全应用
  • Guava Cache介绍-面试用
  • ARM 汇编指令作业(求公约数、for循环实现1-100之间和、从SVC模式切换到user模式简单写法)