原文: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. Spring 学习笔记(六)—— AOP的简单理解

    系统中的业务可以分为核心关注点和横切关注点. 核心关注点时业务处理的主要流程,而横切关注点是与核心业务无关但更为通用的业务. 各个横切关注点离散地穿插于核心业务之中,导致系统地每一个模块都与这些业务具 ...

  2. springmvc maven搭建一

    一.标题:使用maven搭建一个简单的web工程 二.涉及工具:Eclipse.maven.tomcat8.0.jdk1.8 三.操作: 完善项目:增加src/main/java,src/test/r ...

  3. sqlserver 汉字转拼音 首写字母 索引 函数

    create function fun_getPY(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1 ...

  4. [POI2015][bzoj4383] Pustynia [线段树优化建图+拓扑排序]

    题面 bzoj权限题传送门 luogu传送门 思路 首先,这个题目显然可以从所有小的点往大的连边,然后如果没环就一定可行,从起点(入读为0)开始构造就好了 但是问题来了,如果每个都连的话,本题中边数是 ...

  5. [poj] 1149 PIGS || 最大流经典题目

    原题 题目大意 给你m个猪圈以及每个猪圈里原来有多少头猪,先后给你n个人,每个人能打开一些猪圈并且他们最多想买Ki头猪,在每一个人买完后能将打开的猪圈中的猪顺意分配在这次打开猪圈里,在下一个人来之前 ...

  6. 洛谷 P3302 [SDOI2013]森林 解题报告

    P3302 [SDOI2013]森林 题目描述 小\(Z\)有一片森林,含有\(N\)个节点,每个节点上都有一个非负整数作为权值.初始的时候,森林中有\(M\)条边. 小Z希望执行\(T\)个操作,操 ...

  7. jquery使滚动条滚动到最底部

    $('body').scrollTop($('body')[0].scrollHeight); //想要加载页面自动到最底部要写入function中使用setTimeout function top1 ...

  8. JavaScript各变量类型的判断方法

    我们很容易被漂亮的代码吸引,也不知不觉的在自己的代码库中加入这些.却没有冷静的想过它们的优劣.这不,我就收集了一系列形如 "是否为……?" 的判断的boolean函数. isNul ...

  9. [USACO06NOV]玉米田Corn Fields (状压$dp$)

    题目链接 Solution 状压 \(dp\) . \(f[i][j][k]\) 代表前 \(i\) 列中 , 已经安置 \(j\) 块草皮,且最后一位状态为 \(k\) . 同时多记录一个每一列中的 ...

  10. Python之面向对象:类的内置方法

    1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__( ...