zoukankan      html  css  js  c++  java
  • SqlServer查看死锁的存储过程

    IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_who_lock]'AND OBJECTPROPERTY(id, N'IsProcedure'= 1)
    DROP PROCEDURE [dbo].[sp_who_lock]
    GO
     
    USE master
    GO
    CREATE PROCEDURE sp_who_lock
    AS
    BEGIN
    DECLARE @spid INT,@bl INT,
            @intTransactionCountOnEntry INT,
            @intRowcount INT,
            @intCountProperties INT,
            @intCounter INT
     
            CREATE TABLE #tmp_lock_who (
             id INT IDENTITY(1,1),
             spid SMALLINT,
             bl SMALLINT)
     
            IF @@ERROR<>0 RETURN @@ERROR
     
            INSERT INTO #tmp_lock_who(spid,bl) SELECT 0 ,blocked
              FROM (SELECT * FROM sysprocesses WHERE blocked>0 ) a
              WHERE NOT EXISTS(SELECT * FROM (SELECT * FROM sysprocesses WHERE blocked>0 ) b
              WHERE a.blocked=spid)
              UNION SELECT spid,blocked FROM sysprocesses WHERE blocked>0
     
            IF @@ERROR<>0 RETURN @@ERROR
     
    -- 找到临时表的记录数
            SELECT @intCountProperties = COUNT(*),@intCounter = 1
            FROM #tmp_lock_who
     
            IF @@ERROR<>0 RETURN @@ERROR
     
            IF @intCountProperties=0
                SELECT '现在没有阻塞和死锁信息' AS message
     
    -- 循环开始
    while @intCounter <= @intCountProperties
    BEGIN
    --取第一条记录
            SELECT @spid = spid,@bl = bl
            FROM #tmp_lock_who WHERE Id = @intCounter
            BEGIN
                IF @spid =0
                    SELECT '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
                ELSE
                    SELECT '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
                DBCC INPUTBUFFER (@bl )
                END
     
    --循环指针下移
            SET @intCounter = @intCounter + 1
    END
     
    DROP TABLE #tmp_lock_who
     
    RETURN 0
    END

    exec master.dbo.sp_who_lock
  • 相关阅读:
    上帝永远不会问你的十件事
    discuz x1.5 showmessage函数和showDialog函数解析
    人生,没有那么简单…
    Proxy代理对象是如何调用invoke()方法的.
    实现简单的AOP前置后置增强
    浅谈设计模式visitor访问者模式
    了解jsp,这一篇就够了.
    jsp之el表达式jstl标签
    orale数据库.实例.表空间.用户.表
    题解 UVa10892
  • 原文地址:https://www.cnblogs.com/51net/p/2965449.html
Copyright © 2011-2022 走看看