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
  • 相关阅读:
    Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
    事务传播机制Propagation.REQUIRES_NEW
    @ApiImplicitParams、ApiImplicitParam的使用
    启动微服务项目的时候报redisInit错误---本地启动redis服务
    Swagger介绍及使用
    mybaitis框架-trim标签
    pgadmin怎样创建新的连接
    微服务项目启动
    管理中第一可怕之事(2) . 分类: 项目管理 2014-06-25 18:54 257人阅读 评论(0) 收藏
    管理中第一可怕之事(1) . 分类: 项目管理 2014-06-25 18:53 264人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/51net/p/2965449.html
Copyright © 2011-2022 走看看