当前位置: 传客网 > SQL Server中死锁排查

SQL Server中死锁排查

2017-01-05 作者:studyofnet

(1). 使用SQL Server的系统存储过程sp_who和sp_lock

 

可以查看当前数据库中的锁情况;进而根据objectID(@objID)(SQL Server 2005)/ object_name(@objID)(Sql Server 2000)可以查看哪个资源被锁,用dbcc ld(@blk),可以查看最后一条发生给SQL Server的Sql语句;

 


CREATE Table #Who(spid int,
    ecid int,
    status nvarchar(50),
    loginname nvarchar(50),
    hostname nvarchar(50),
    blk int,
    dbname nvarchar(50),
    cmd nvarchar(50),
    request_ID int);

CREATE Table #Lock(spid int,
    dpid int,
    objid int,
    indld int,
    [Type] nvarchar(20),
    Resource nvarchar(50),
    Mode nvarchar(10),
    Status nvarchar(10)
);

INSERT INTO #Who
    EXEC sp_who active  --看哪个引起的阻塞,blk
INSERT INTO #Lock
    EXEC sp_lock  --看锁住了那个资源id,objid

DECLARE @DBName nvarchar(20);
SET @DBName='NameOfDataBase'

SELECT #Who.* FROM #Who WHERE dbname=@DBName
SELECT #Lock.* FROM #Lock
    JOIN #Who
        ON #Who.spid=#Lock.spid
            AND dbname=@DBName;

--最后发送到SQL Server的语句
DECLARE crsr Cursor FOR
    SELECT blk FROM #Who WHERE dbname=@DBName AND blk<<0;
DECLARE @blk int;
open crsr;
FETCH NEXT FROM crsr INTO @blk;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
    dbcc inputbuffer(@blk);
    FETCH NEXT FROM crsr INTO @blk;
END;
close crsr;
DEALLOCATE crsr;

--锁定的资源
SELECT #Who.spid,hostname,objid,[type],mode,object_name(objid) as objName FROM #Lock
    JOIN #Who
        ON #Who.spid=#Lock.spid
            AND dbname=@DBName
    WHERE objid<<0;

DROP Table #Who;
DROP Table #Lock;

 

 

 

分析死锁

 

中查看该文件。

 

 

 

参考资料: sql server中的死锁   http://www.studyofnet.com/news/335.html

 



相关推荐

  • SQL Server 2005数据库死锁问题

    数据库操作的死锁是不可避免的,本文并不打算讨论死锁怎样产生,重点在于解决死锁,通过SQLServer2005,现在似乎有了一种新的解决办法。  将下面的SQL语句放在两个不同的连接里面,并且在5秒内同时执行,将会发生死锁。useNorthw

  • Windwos Server 2003故障排查

    WindowsServer2003系列操作系统中提供的许多工具对于排查硬件和软件问题都很有帮助,特别适合使用2003操作系统的网络管理员使用。其中许多工具主要不是作为故障排查工具提供的,但它们可以用来诊断问题。熟悉可用于故障排查的各种工具并

  • 死锁与优先级反转

    一、死锁1.基本概念死锁:死锁指的是系统中并发执行的多个线程(进程)由于无法获所需的资源而永久阻塞的状态。死锁产生的必要条件:排它性互斥:指的是资源在任意时刻只能由一个任务(线程或进程)使用。如果此时还有其它任务请求该资源,则请求者只能等待

  • atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39

    atitit.线程死锁卡住无反应的原因incmd调用的解决方案v3q391.问题::线程死锁卡住无反应11.1.分类::cmd调用,netio,fileio调用,multithread调用samevar的时候儿..11.2.原因readLi

  • 如何避免Java多线程中的死锁

    Java多线程中的死锁,死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足以下四个条件:1.互斥条

  • 死锁的概念

    死锁的概念在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。例如:·事务A获取了行1的共享锁。·事务B获取了行2的共享锁。·现在,事务A请求行2的排他锁,但在事务B完成并释放其对行2持有

  • 中移动悄然“封锁”十省WAP 免费WAP遭遇生死劫

    中移动悄然“封锁”十省WAPWAP网站正寻找对策,希望能与运营商“公平”相处  早报记者严丹虹  早报财经版昨天报道的“中移动招安在即WAP被迫裁员”又有新进展:中移动已悄然开始对WAP(无线应用协议)“动刀”。记者昨日从知情人士处最新获悉

  • IIS服务请求时的死锁、挂起解决方案(转)

    IIS服务请求时的死锁、挂起解决方案  2010-05-1910:50症状使从ASP.NET调用XMLWebservices时应用您可能会遇到争用、性能下降和死锁。客户端可能会报告请求停止响应(或"挂起")或需要执...使从ASP.NET调

  • mysql 死锁相关

    今天在公司项目里遇到一个mysql死锁问题,进入mysql使用showengineinnodbstatus;命令查看到发生死锁时运行的sql语句分别是updatevehicledeviceinfosetcarlicense='吉CE9132

  • 数据库死锁检测和解决方式

    做性能测试或者线上环境并发量比较大的时候经常出现数据库死锁的情况,下面介绍几种数据库死锁的检测方式和解决方式。都是采用sql命令实现的。如果不用命令行也可以通过查看数据库服务器的日志信息进行死锁检测,默认位置是mysql安装目录下的.err

  • 如何避免Java线程死锁

    http://www.iteye.com/topic/9082Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键。不幸的是,使用上锁会带来其他问题。让我们来看一些常见问题以及相应的解决方法。  Java线程死锁需

  • Server Tomcat v6.0 Server at localhost was unable to&nbs

    修改workspace\.metadata\.plugins\org.eclipse.wst.server.core\servers.xml文件。<BR>server-type="org.eclipse.jst.server.g

  • Flash Media Server 起步(7)与server端交互

    FlashMediaServer起步(7)与server端交互这是目前为止最难的了吧~~要直接看原文件的点这里:整理后就几行代码不过多解释客户端呼叫服务器fla://客户端呼叫server端msgfromclient函数,并将返回值trac

  • 资讯播报:微软发布高性能计算集群系统 Windows HPC Server 2008 R2 Suite 中文评估版

    近日,微软发布了新一代高性能计算(HPC)集群专用系统“WindowsHPCServer2008R2Suite”,这个“专用系统”可为以超级计算机为主的HPC环境提供企业级的工具、性能和伸缩性

  • linux 安装vmware server 2.0.2

    1..tar.gz安装2..常见问题3..VMware的几种网络连接方式比较来自http://g.51cto.com/virtual/12264..rpm安装VMware-server-2.0.25..设置bios支持虚拟化(dellr61

  • 如何用jstack检查死锁

    写一个死锁的例子:1,copy下面代码到DeadLock.java2,运行javacDeadLock.java生成*.class3,jarcvfDeadLock.jar*.class。生成jar包4,java-cpDeadLock.jarD

  • Flash Media Server 起步(7)与server端交互

    这是目前为止最难的了吧~~下载文件点击这里下载文件整理后就几行代码不过多解释客户端呼叫服务器fla://客户端呼叫server端msgfromclient函数,并将返回值trace出来mync=newNetConnection();mync

  • Flash Media Server 起步(7)与server端交互

    这是目前为止最难的了吧~~要直接看原文件的点这里:整理后就几行代码不过多解释客户端呼叫服务器fla://客户端呼叫server端msgfromclient函数,并将返回值trace出来mync=newNetConnection();mync

  • 安装SQL Server 2005过程出现错误:“SQL Server 服务无法启动”的解决办法(亲试)(图片)(原创)

    注:最后的粗体字为最终解决办法。近日遇到一台曙光天阔A620R-H服务器,安装了winserver2003R2的系统,需要来安装SQLServer2005,系统是新做的,很干净。首先,安装了.netFramework2.0及IIS,拿来一版

  • Windows Server 2008 R2 域控服务器打开组策略显示“管理模板进行解析

    今天在windows2008R2sp1上添加一条策略时,报如下错误。"进行解析时遇到错误。找不到资源“$(string.Advanced_EnableSSL3Fallback)"(在属性displayName中引用).”,"文件C:\Win

返回
顶部