死锁查看处理(一)

简介: 原文:死锁查看处理(一) 1、exec sp_who2 执行存储过程查看那些语句处于挂起或者阻塞状态。 spid 表示当前回话ID 唯一的 status表示状态当前执行的状态 当状态为SUSPENDED时说明当前语句为挂起状态 HostName 表示回话客户端的计算机名称 Blkby 表示的是令当前回话阻塞的其他回话ID。
原文: 死锁查看处理(一)

1、exec sp_who2 执行存储过程查看那些语句处于挂起或者阻塞状态。

执行结构
spid 表示当前回话ID 唯一的
status表示状态当前执行的状态 当状态为SUSPENDED时说明当前语句为挂起状态
HostName 表示回话客户端的计算机名称
Blkby 表示的是令当前回话阻塞的其他回话ID。正常表示为 .
DBName 表示当前回话连接的数据库名称

状态为SUSPENDED 时,需要查看列Blkby列是否为空,为空表示是挂起的头部。
若Blkby列为数字@spid,则需要根据@spid来查找列SPID中对应的@spid行的信息,依次循环查找到Blkby为空的行,则此回话则为阻塞的头部。

2、DBCC INPUTBUFFER(72) 查看回话ID72 当前执行的sql语句,EventInfo列为执行语句。
这里写图片描述

3、Kill 72 ,解除死锁需要kill掉阻塞的头spid ,若spid72 ,则执行

kill 72

4、sp_who2简化去掉正常的回话,可执行 exec GetLock 存储过程
code:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <YSH>
-- Create date: <20140722>
-- Description: <查看锁表原因>
-- =============================================
create PROCEDURE GetLock 
AS
BEGIN
  declare @tblDetail varchar(60),@nowsj varchar(10),
          @sql varchar(8000),@where varchar(8000)

  set @nowsj= replace(convert(varchar,getdate(),114),':','')
  set @tblDetail='tblLock'+convert(varchar,@@spid)+@nowsj

  set @sql='create table '+@tblDetail+'
            (
               spid varchar(10),
               [Status] varchar(50),
               [Login]  varchar(50), 
               HostName varchar(100),
               BlkBy varchar(10),
               DBName varchar(100),
               Command varchar(100),
               CPUTime bigint,
               DiskIO bigint,
               LastBatch varchar(20),
               programName varchar(100),
               spid1 varchar(10),
               REQUESTID varchar(10)
             ) ' 
  --print @sql
  exec(@sql)

  set @sql='insert '+@tblDetail+' exec sp_who2 '
  --print @sql
  exec(@sql)

  ---查找阻塞其他连接的连接
  set @sql='select * from '+@tblDetail+' MX
            where Rtrim(Ltrim(blkby))=''.'' 
                 and exists(select * from '+@tblDetail+' A where A.blkby=MX.spid) 
            order by spid '
  --print @sql
  exec(@sql)

  ---查找被其他连接阻塞的连接 以及 阻塞其他连接的连接
  set @sql='select * from '+@tblDetail+' MX
            where Rtrim(Ltrim(blkby))<>''.'' 
                 or exists(select * from '+@tblDetail+' A where A.blkby=MX.spid) 
            order by spid '
  --print @sql
  exec(@sql)

  exec('drop table '+@tblDetail)

END
GO
目录
相关文章
|
Web App开发 Windows
fiddler抓取https失败解决方案
原文:fiddler抓取https失败解决方案 众所周知,Fiddler默认只能抓取到http请求,要抓取到https请求我们还需要FiddlerCertMaker插件的支持, 至于怎么使用fiddler抓https及插件的使用方式,大家可以去百度随便一搜就可以找到大量的教程,今天这 篇文章的主...
3067 0
|
2月前
|
数据采集 NoSQL 关系型数据库
试了一圈 ETL 工具后,这几款真心够用了!
ETL(数据抽取、转换、加载)是整合企业分散数据的关键技术。本文介绍了四种常用ETL工具:FineDataLink(功能全面、可视化操作)、Kettle(开源免费、灵活易用)、DataX(高效同步、适合大数据搬运)、Airflow(流程调度、任务管理),并分析了各自适用场景,助力企业根据自身需求选择合适工具,提升数据处理效率。
|
4月前
|
存储 机器学习/深度学习 缓存
vLLM 核心技术 PagedAttention 原理详解
本文系统梳理了 vLLM 核心技术 PagedAttention 的设计理念与实现机制。文章从 KV Cache 在推理中的关键作用与内存管理挑战切入,介绍了 vLLM 在请求调度、分布式执行及 GPU kernel 优化等方面的核心改进。PagedAttention 通过分页机制与动态映射,有效提升了显存利用率,使 vLLM 在保持低延迟的同时显著提升了吞吐能力。
1604 18
vLLM 核心技术 PagedAttention 原理详解
|
7月前
|
监控 安全 Ubuntu
Linux下如何安装配置Fail2ban防护工具
通过以上步骤,可以在Linux系统中成功安装和配置Fail2ban,从而有效保护服务器免受暴力破解等攻击。Fail2ban通过实时监控日志文件,自动更新防火墙规则,为系统安全提供了一层重要的保护。
1186 36
|
SQL 传感器 监控
10款优秀的SQL Server服务器监控工具
服务器是网络中最重要的资源之一,SQL Server的广泛普及使SQL Server监控工具成为长期网络维护的先决条件。使用服务器监控工具跟踪服务器的运行状况可以为你提供解决性能问题所需的信息。
2129 1
10款优秀的SQL Server服务器监控工具
|
SQL C# 数据库
C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)
原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高.  包装了一个简单的sqlbulkcopy类,用于数据从datatable导入到sqlserver.
3868 0
|
7天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1165 3
|
6天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
843 12
|
16天前
|
人工智能 运维 安全