zoukankan      html  css  js  c++  java
  • [SQL]死锁处理语句

    引言

    今天在群里看到分享的解决死锁的sql语句,就想着这东西以后肯定用的着,就下载下来,在这里记录一下,以后查找也方便。

    SQL

     
     1 SET QUOTED_IDENTIFIER ON
     2 GO
     3 SET ANSI_NULLS ON
     4 GO
     5 CREATE PROCEDURE sp_who_lock
     6 AS
     7     BEGIN
     8         DECLARE @spid INT ,
     9             @bl INT ,
    10             @intTransactionCountOnEntry INT ,
    11             @intRowcount INT ,
    12             @intCountProperties INT ,
    13             @intCounter INT
    14         CREATE TABLE #tmp_lock_who
    15             (
    16               id INT IDENTITY(1, 1) ,
    17               spid SMALLINT ,
    18               bl SMALLINT
    19             )
    20          IF @@ERROR <> 0
    21             RETURN @@ERROR
    22         INSERT INTO #tmp_lock_who ( spid, bl )
    23                 SELECT 0, blocked
    24                     FROM ( SELECT *
    25                             FROM sys.sysprocesses
    26                             WHERE blocked > 0
    27                          ) a
    28                     WHERE NOT EXISTS ( SELECT *
    29                                         FROM ( SELECT *
    30                                                 FROM sys.sysprocesses
    31                                                 WHERE blocked > 0
    32                                              ) b
    33                                         WHERE a.blocked = spid )
    34                 UNION
    35                 SELECT spid, blocked
    36                     FROM sys.sysprocesses
    37                     WHERE blocked > 0
    38         IF @@ERROR <> 0
    39             RETURN @@ERROR
    40        -- 找到临时表的记录数
    41         SELECT @intCountProperties = COUNT(*), @intCounter = 1
    42             FROM #tmp_lock_who
    43          IF @@ERROR <> 0
    44             RETURN @@ERROR
    45         IF @intCountProperties = 0
    46             SELECT N'现在没有阻塞和死锁信息' AS message
    47        -- 循环开始
    48         WHILE @intCounter <= @intCountProperties
    49             BEGIN
    50               -- 取第一条记录
    51                 SELECT @spid = spid, @bl = bl
    52                     FROM #tmp_lock_who
    53                     WHERE Id = @intCounter
    54                 BEGIN
    55                     IF @spid = 0
    56                         SELECT N'引起数据库死锁的是: ' + CAST(@bl AS VARCHAR(10))
    57                                 + N'进程号,其执行的SQL语法如下'
    58                     ELSE
    59                         SELECT N'进程号SPID:' + CAST(@spid AS VARCHAR(10))
    60                                 + N'被进程号SPID:' + CAST(@bl AS VARCHAR(10)) N'阻塞,其当前进程执行的SQL语法如下'
    61                     DBCC INPUTBUFFER (@bl )
    62                 END
    63               -- 循环指针下移
    64                 SET @intCounter = @intCounter + 1
    65             END
    66         DROP TABLE #tmp_lock_who
    67         RETURN 0
    68     END
    69 go
    70 EXEC sp_who_lock
    71 DROP PROC  sp_who_lock
    72 GO
    73 SET QUOTED_IDENTIFIER OFF
    74 GO
    75 
    76 SET ANSI_NULLS ON
    77 
    78 GO
  • 相关阅读:
    bzoj 3171 [Tjoi2013]循环格(MCMF)
    spoj 839 Optimal Marks(二进制位,最小割)
    bzoj 1458 士兵占领(最大流)
    bzoj 3931 [CQOI2015]网络吞吐量(最短路,最大流)
    bzoj 2229 [Zjoi2011]最小割(分治+最小割)
    bzoj 1324 Exca王者之剑(黑白染色,最小割)
    BestCoder Round #75 解题报告
    (转)php 根据url自动生成缩略图并处理高并发问题
    PHP生成图片太慢了。。有些都不出来、
    PHP加Nginx实现动态裁剪图片方案
  • 原文地址:https://www.cnblogs.com/jameslif/p/4086831.html
Copyright © 2011-2022 走看看