星空网 > 软件开发 > 数据库

SqlServer死锁与阻塞检测脚本

 1 IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'sp_Lock_Scan') 2   DROP PROCEDURE sp_Lock_Scan 3 GO 4  5 CREATE PROCEDURE sp_Lock_Scan 6 AS 7   DECLARE @SPID INT 8   DECLARE @BLK INT 9   DECLARE @Count INT 10   DECLARE @Counter INT 11   DECLARE @LOCK BIT 12  13   CREATE TABLE #Temp 14   ( 15     [Id] INT IDENTITY 16     ,[SPID] INT 17     ,[BLOCK] INT 18   ) 19  20   SELECT @LOCK = 0 21  22   IF @@ERROR <> 0 RETURN @@ERROR 23  24   INSERT INTO #Temp 25   ( 26     [SPID], [BLOCK] 27   ) 28   SELECT 29     0, [blocked] 30   FROM 31     ( 32       SELECT * FROM [master]..[sysprocesses] WHERE [blocked] > 0 33     ) a 34   WHERE 35     NOT EXISTS 36     ( 37       SELECT * FROM [master]..[sysprocesses] WHERE a.[blocked] = [spid] AND [blocked] > 0 38     ) 39   UNION 40     SELECT [spid], [blocked] FROM [master]..[sysprocesses] WHERE [blocked] > 0 41  42   IF @@ERROR <> 0 RETURN @@ERROR 43  44   SELECT @Count = COUNT(*), @Counter = 1 FROM #Temp 45  46   IF @@ERROR <> 0 RETURN @@ERROR 47  48   IF @Count = 0 49     BEGIN 50       SELECT N'没有阻塞和死锁信息' [ScanMessage] 51       RETURN 0 52     END 53   ELSE 54     BEGIN 55       WHILE @Counter <= @Count 56         BEGIN 57           IF EXISTS 58             ( 59               SELECT * FROM #Temp a  60               WHERE 61                 a.[Id] > @Counter 62               AND 63                 EXISTS 64                 ( 65                   SELECT * FROM #Temp WHERE [Id] <= @Counter AND a.[BLOCK] = [SPID] 66                 ) 67             ) 68             BEGIN 69               SELECT @LOCK = 1 70  71               SELECT @SPID = [SPID], @BLK = [BLOCK] from #Temp WHERE [Id] = @Counter 72  73               SELECT N'引起数据库死锁的是:【' + CAST(@SPID AS NVARCHAR(255)) + N'】进程,其执行的SQL语言如下' [ScanMessage] 74  75               SELECT @SPID [SPID], @BLK [BLOCKED] 76  77               DBCC INPUTBUFFER(@SPID) 78               DBCC INPUTBUFFER(@BLK) 79             END 80           SELECT @Counter = @Counter + 1 81         END 82  83       IF @LOCK = 0 84         BEGIN 85           SELECT @Counter = 1 86  87           WHILE @Counter <= @Count 88             BEGIN 89               SELECT @SPID = [SPID], @BLK = [BLOCK] FROM #Temp where [Id] = @Counter 90  91               IF @SPID = 0 92                 SELECT N'引起阻塞的是:【'+ CAST(@BLK AS NVARCHAR(255)) + '】,其执行的SQL语法如下' [ScanMessage] 93               ELSE 94                 SELECT N'进程【' + CAST(@SPID AS NVARCHAR(255)) + N'】被进程【' + CAST(@BLK AS NVARCHAR(255)) + N'】阻塞,当前进程的SQL语法如下' [ScanMessage] 95  96               DBCC INPUTBUFFER(@SPID) 97               DBCC INPUTBUFFER(@BLK) 98  99               SELECT @Counter = @Counter + 1100             END101         END102     END103 RETURN 0104 GO

 




原标题:SqlServer死锁与阻塞检测脚本

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

旺季爆单攻略|谷歌广告策略大起底,快来抄作业:https://www.kjdsnews.com/a/655362.html
到底怎么才能做好亚马逊?:https://www.kjdsnews.com/a/655363.html
大多数人不知道的12款强大的亚马逊营销工具:https://www.kjdsnews.com/a/655364.html
请查收!速卖通巴西市场双11备战秘籍:https://www.kjdsnews.com/a/655365.html
小心!冬季热销品暗藏侵权危机,留评1.4W+的爆款已有专利!:https://www.kjdsnews.com/a/655366.html
亚马逊正在开发新功能!卖家选品大利好:https://www.kjdsnews.com/a/655367.html
石象湖景区门票-石象湖景区门票优惠政策:https://www.vstour.cn/a/411243.html
北京到嵩山自驾游沿途景点 北京距离嵩山有多远:https://www.vstour.cn/a/411244.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流