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
  • 相关阅读:
    k8s中负载均衡器【ingress-nginx】部署
    利用procedure批量插入数据
    一次socket.error: [Errno 99] Cannot..报错排查
    k8s使用Job执行任务失败了怎么办
    采坑指南——k8s域名解析coredns问题排查过程
    如何批量删除k8s资源对象
    史上最全docker基础知识汇总
    docker镜像制作必备技能
    kubernetes垃圾回收器GarbageCollector源码分析(一)
    python标准库-日志logging
  • 原文地址:https://www.cnblogs.com/51net/p/2965449.html
Copyright © 2011-2022 走看看