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
  • 相关阅读:
    PHP编程基础学习(一)——数据类型
    6-6 带头结点的链式表操作集(20 分)
    6-5 链式表操作集(20 分)
    6-4 链式表的按序号查找(10 分)
    6-3 求链式表的表长(10 分)
    6-2 顺序表操作集(20 分)
    6-1 单链表逆转(20 分)
    学生成绩管理系统(六):项目总结
    学生成绩管理系统(五):系统的完善与数据库的链接
    学生成绩管理系统(四)
  • 原文地址:https://www.cnblogs.com/51net/p/2965449.html
Copyright © 2011-2022 走看看