原文:sqlserver 出现sql被锁时,查看加锁和被锁的sql

DECLARE @spid INT

DECLARE @blk INT

DECLARE @count INT

DECLARE @index INT

DECLARE @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,

       blocked

FROM   (SELECT *

        FROM   master..sysprocesses

        WHERE  blocked > 0)a

WHERE  NOT EXISTS(SELECT *

                  FROM   master..sysprocesses

                  WHERE  a.blocked = spid

                         AND blocked > 0)

UNION

SELECT spid,

       blocked

FROM   master..sysprocesses

WHERE  blocked > 0

 

--if @@error<>0 return @@error    

SELECT @count = Count(*),

       @index = 1

FROM   #temp_who_lock

 

--select @count,@index

 

--if @@error<>0 return @@error    

IF @count = 0

  BEGIN

      SELECT '没有阻塞和死锁信息'

  --return 0    

  END

 

WHILE @index <= @count

  BEGIN

      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 + 1

  END

 

IF @lock = 0

  BEGIN

      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

        END

  END

 

DROP TABLE #temp_who_lock

 

 

 

 

------------------

sqlserver 出现sql被锁时,查看加锁和被锁的sql的更多相关文章

  1. 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连

    在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 sql server服务器sqlserver远程连接数据库防火墙在建立 ...

  2. JAVA锁机制-可重入锁,可中断锁,公平锁,读写锁,自旋锁,

    如果需要查看具体的synchronized和lock的实现原理,请参考:解决多线程安全问题-无非两个方法synchronized和lock 具体原理(百度) 在并发编程中,经常遇到多个线程访问同一个 ...

  3. sqlserver锁表查看

    sp_lock--查询哪个进程锁表了,spid:进程ID,ObjId:对象ID EXEC sp_executesql N'KILL [spid]'--杀进程 select object_name([O ...

  4. SQLServer 查询使用键查找时锁申请及释放顺序

    最近看了高兄的一篇文章,Sql Server 高频,高并发访问中的键查找死锁解析,很有收获,里面讲到了键查找引起的死锁问题. 当然看的过程中,其实自己有个疑问: 对于键查找这类查询,会申请哪些锁,锁申 ...

  5. sql server update时,是行锁还是表锁

    https://bbs.csdn.net/topics/120000749 http://www.cnblogs.com/s021368/articles/2148659.html 问题: udpat ...

  6. SQL Server 查看当前活动的锁

    第一步: 要查看活动中的锁,如果日前根本就没有活动中的锁怎么办,还好我会自己做一把. begin tran         select * from dbo.Nums         with(ta ...

  7. InnoDB中锁的模式,锁的查看,算法

    InnoDB中锁的模式   Ⅰ.总览 S行级共享锁lock in share mode X行级排它锁增删改 IS意向共享锁 IX意向排他锁 AI自增锁 Ⅱ.锁之间的兼容性 兼 X IX S IS X ...

  8. SQL SERVER锁(LOCK)知识及锁应用

    提示:这里所摘抄的关于锁的知识有的是不同sql server版本的,对应于特定版本时会有问题. 一 关于锁的基础知识 (一). 为什么要引入锁 当多个用户同时对数据库的并发操作时会带来以下数据不一致的 ...

  9. 浅谈SQL Transaction在请求中断后的行锁表锁

    最近在维护Web Service接口时,由于数据数据量达到千万级别,接口调用不时出现错误让人不胜烦恼,经过性能测试查出瓶颈在数据库数据处理上,可着实忙了一番.相信众多程序猿和DBA都会头痛性能的问题, ...

随机推荐

  1. ActiveX 控件和 Web 浏览器加载项

    百度ActiveX的概念. 如何从零开始写一个 Chrome 扩展 360极速浏览器应用开发平台.

  2. Thread suspend()挂起resume()恢复

    import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.Actio ...

  3. EXTJS4.0 form 表单提交 后 回调函数 不响应的问题

    在提交表单后,应返回一个 JSON 至少要包含{success:true} 否则,EXT 不知道是否成功,没有响应. {success:true,msg:'成功',Url:'http://www.ba ...

  4. mogodb gui

    mogodb gui https://robomongo.org/ https://github.com/Studio3T/robomongo https://www.imooc.com/learn/ ...

  5. [hdu6432]Problem G. Cyclic

    题目大意:给你$n$,一种合法的排列为,排列中没有$s[i\%n+1]-s[i]==1$,求合法方案数 题解:容斥,令$f_{i,j}$表示有$i$个元素,至少包含$j$个$s[i\%n+1]-s[i ...

  6. 洛谷 P3747 [六省联考2017]相逢是问候 解题报告

    P3747 [六省联考2017]相逢是问候 题目描述 \(\text {Informatik verbindet dich und mich.}\) 信息将你我连结. \(B\) 君希望以维护一个长度 ...

  7. ZCC loves cube(cube)

    题目描述 调戏完了狗,ZCC开始玩起了积木.ZCC的面前有一块n*n的棋盘,他要用这些1*1*1的积木在棋盘上搭出一个宏伟的建筑.积木有三种颜色,ZCC认为一个建筑要被称为宏伟的应该满足能从正面看到的 ...

  8. 用HTML5绘制的一个星空特效图

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. nginx tomcat负载均衡 使用redis session共享

    环境准备 1.准备一台nginx服务器 ip192.168.1.133 端口81 安装过程: #首先安装依赖: yum -y install gcc-c++ yum -y install pcre p ...

  10. HTTP协议中GET、POST和HEAD的介绍

    HTTP协议中GET.POST和HEAD的介绍 GET: 请求指定的页面信息,并返回实体主体. HEAD: 只请求页面的首部. POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体 ...