博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver查询是否有死锁
阅读量:6589 次
发布时间:2019-06-24

本文共 2611 字,大约阅读时间需要 8 分钟。

  hot3.png

/************************************************************* Code formatted by SoftTree SQL Assistant ?v6.5.258* Time: 2014/11/12 5:46:41************************************************************/DECLARE @spid INTDECLARE @blk INTDECLARE @count INTDECLARE @index INTDECLARE @lock TINYINT SET @lock = 0 CREATE TABLE #temp_who_lock(id       INT IDENTITY(1, 1),spid     INT,blk      INT) --if @@error<>0 return @@error    INSERT INTO #temp_who_lock (   spid,   blk )SELECT 0,      blockedFROM   (          SELECT *          FROM   MASTER..sysprocesses          WHERE  blocked > 0      )aWHERE  NOT EXISTS(          SELECT *          FROM   MASTER..sysprocesses          WHERE  a.blocked = spid                 AND blocked > 0      )UNIONSELECT spid,      blockedFROM   MASTER..sysprocessesWHERE  blocked > 0 --if @@error<>0 return @@error    SELECT @count = COUNT(*),      @index = 1FROM   #temp_who_lock --select @count,@index --if @@error<>0 return @@error    IF @count = 0BEGIN   SELECT '没有阻塞和死锁信息'           --return 0END WHILE @index <= @countBEGIN   IF EXISTS(          SELECT 1          FROM   #temp_who_lock a          WHERE  id > @index                 AND EXISTS(                         SELECT 1                         FROM   #temp_who_lock                         WHERE  id <= @index                                AND a.blk = spid                     )      )   BEGIN       SET @lock = 1               SELECT @spid = spid,              @blk     = blk       FROM   #temp_who_lock       WHERE  id       = @index               SELECT '引起数据库死锁的是: ' + CAST(@spid AS VARCHAR(10)) +               '进程号,其执行的SQL语法如下' ;               SELECT @spid,              @blk                               DBCC INPUTBUFFER(@spid)                       DBCC INPUTBUFFER(@blk)   END       SET @index = @index + 1END IF @lock = 0BEGIN   SET @index = 1       WHILE @index <= @count   BEGIN       SELECT @spid = spid,              @blk     = blk       FROM   #temp_who_lock       WHERE  id       = @index               IF @spid = 0           SELECT '引起阻塞的是:' + CAST(@blk AS VARCHAR(10)) +                   '进程号,其执行的SQL语法如下'       ELSE           SELECT '进程号SPID:' + CAST(@spid AS VARCHAR(10)) + '被' +                   '进程号SPID:' + CAST(@blk AS VARCHAR(10)) +                   '阻塞,其当前进程执行的SQL语法如下'               PRINT (LTRIM(@spid) + '' + LTRIM(@blk));       IF (@spid <> 0)       BEGIN           DBCC INPUTBUFFER(@spid) --       END               DBCC INPUTBUFFER(@blk) --引起阻塞语句               SET @index = @index + 1   ENDEND DROP TABLE #temp_who_lock --return 0    --KILL 64

转载于:https://my.oschina.net/ij2ee/blog/343646

你可能感兴趣的文章
request使用
查看>>
Win10文件管理器那些你不知道的秘密
查看>>
更改MyEclipse的默认编码
查看>>
Nordic Collegiate Programming Contest 2016
查看>>
cisco 交换机设置时区、时间、同步日志本地时间等操作
查看>>
获取网页源码
查看>>
从oracle到mysql,主从到分库,一个普通项目数据库架构的变迁
查看>>
数据结构
查看>>
一个简简单单检测http服务状态的脚本
查看>>
单例模式2014-12
查看>>
win32 ——定时器消息 小程序:打印时间
查看>>
USACO全部月赛及GateWay数据
查看>>
【AtCoder】ARC 081 E - Don't Be a Subsequence
查看>>
1 4 空格替换
查看>>
【专题】概率和期望
查看>>
从零开始学wordpress 之四
查看>>
Three.js 学习笔记 - 给跳一跳小游戏添加光源,阴影
查看>>
@babel/polyfill按需加载
查看>>
koa compose源码阅读
查看>>
CSS进阶(4)—— 温和padding中的诡异CSS现象
查看>>