IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'sp_Lock_Scan')
DROP PROCEDURE sp_Lock_Scan
GO CREATE PROCEDURE sp_Lock_Scan
AS
DECLARE @SPID INT
DECLARE @BLK INT
DECLARE @Count INT
DECLARE @Counter INT
DECLARE @LOCK BIT CREATE TABLE #Temp
(
[Id] INT IDENTITY
,[SPID] INT
,[BLOCK] INT
) SELECT @LOCK = 0 IF @@ERROR <> 0 RETURN @@ERROR INSERT INTO #Temp
(
[SPID], [BLOCK]
)
SELECT
0, [blocked]
FROM
(
SELECT * FROM [master]..[sysprocesses] WHERE [blocked] > 0
) a
WHERE
NOT EXISTS
(
SELECT * FROM [master]..[sysprocesses] WHERE a.[blocked] = [spid] AND [blocked] > 0
)
UNION
SELECT [spid], [blocked] FROM [master]..[sysprocesses] WHERE [blocked] > 0 IF @@ERROR <> 0 RETURN @@ERROR SELECT @Count = COUNT(*), @Counter = 1 FROM #Temp IF @@ERROR <> 0 RETURN @@ERROR IF @Count = 0
BEGIN
SELECT N'没有阻塞和死锁信息' [ScanMessage]
RETURN 0
END
ELSE
BEGIN
WHILE @Counter <= @Count
BEGIN
IF EXISTS
(
SELECT * FROM #Temp a
WHERE
a.[Id] > @Counter
AND
EXISTS
(
SELECT * FROM #Temp WHERE [Id] <= @Counter AND a.[BLOCK] = [SPID]
)
)
BEGIN
SELECT @LOCK = 1 SELECT @SPID = [SPID], @BLK = [BLOCK] from #Temp WHERE [Id] = @Counter SELECT N'引起数据库死锁的是:【' + CAST(@SPID AS NVARCHAR(255)) + N'】进程,其执行的SQL语言如下' [ScanMessage] SELECT @SPID [SPID], @BLK [BLOCKED] DBCC INPUTBUFFER(@SPID)
DBCC INPUTBUFFER(@BLK)
END
SELECT @Counter = @Counter + 1
END IF @LOCK = 0
BEGIN
SELECT @Counter = 1 WHILE @Counter <= @Count
BEGIN
SELECT @SPID = [SPID], @BLK = [BLOCK] FROM #Temp where [Id] = @Counter IF @SPID = 0
SELECT N'引起阻塞的是:【'+ CAST(@BLK AS NVARCHAR(255)) + '】,其执行的SQL语法如下' [ScanMessage]
ELSE
SELECT N'进程【' + CAST(@SPID AS NVARCHAR(255)) + N'】被进程【' + CAST(@BLK AS NVARCHAR(255)) + N'】阻塞,当前进程的SQL语法如下' [ScanMessage] DBCC INPUTBUFFER(@SPID)
DBCC INPUTBUFFER(@BLK) SELECT @Counter = @Counter + 1
END
END
END
RETURN 0
GO

SqlServer死锁与阻塞检测脚本的更多相关文章

  1. 【2018-01-26】SqlServer 检查死锁和阻塞

    利用sys.sysprocesses SQL进程检查是否出现死锁和阻塞 Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁 select ...

  2. Redis + keepalived 高可用行配置检测脚本

    Redis 在生产配置中:除redis集群.哨兵模式之外:主从模式还是比较普遍的. 配置 redis 多主从:由 keepalived 做 VIP 地址漂移.可以实现redis的高可用性. keepa ...

  3. SqlServer执行大的数据库脚本出错解决方法

    如果执行线上项目拷下来sqlserver的.sql的数据库脚本文件,如果文件较大时,那么就会报错内存不足之类的. 这时可以在命令提示符使用命令来执行脚本文件.切记,执行前先改一下数据库存放位置! 命令 ...

  4. 【javascript】浏览器用户代理检测脚本实现

    以下是完整的用户代理字符串检测脚本,包括检测呈现引擎.平台.Windows操作系统.移动设备和游戏系统. var client = function(){ // 呈现引擎 var engine = { ...

  5. keepalived检测脚本及注意事项

    keepalived检测脚本的作用及注意事项: 默认每隔3秒钟执行一次检测脚本,检查nginx服务是否启动,如果没启动就把nginx服务启动起来,如果启动不成功,就把keepalived服务down掉 ...

  6. SQLServer 事务复制中使用脚本添加某个对象的发布

    原文:SQLServer 事务复制中使用脚本添加某个对象的发布 -- use [发布库] --添加表:创建项目并将其添加到发布中 exec sp_addarticle @publication = N ...

  7. 使用jstack排查多线程死锁、阻塞

    问题: 针对线上多线程死锁.阻塞,跑着跑着就卡住了 查看线上线程池的状态 jstack用于生成java虚拟机当前时刻的线程快照. 线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成 ...

  8. SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)

    0X01 概述 SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务.利用SSRF能实现以下效果:1)        扫描内网(主 ...

  9. SQLServer启动和关闭bat脚本

    原文:SQLServer启动和关闭bat脚本   安装完毕SQL SERVER 2005后,会默认自动启动SQL Server等几个服务,这几个服务比较占用系统资源.当不运行SQL Server时,最 ...

随机推荐

  1. 你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物

    3.8  用结构体类型描述复杂的事物 利用C++本身所提供的基本数据类型所定义的变量,只能表达一些简单的事物.比如我们可以用int类型定义nAge变量表示人的年龄,用string类型定义strName ...

  2. C#中的委托和事件2-2(转)

    引言 如果你看过了 C#中的委托和事件2-1 一文,我想你对委托和事件已经有了一个基本的认识.但那些远不是委托和事件的全部内容,还有很多的地方没有涉及.本文将讨论委托和事件一些更为细节的问题,包括一些 ...

  3. Properties配置文件

    package file; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; ...

  4. asp.net webapi参数绑定

    content={"content": [{"comb_id": "100323","comb_name": " ...

  5. Visual Studio 2015 Owin+MVC+WebAPI+ODataV4+EntityFrawork+Identity+Oauth2.0+AngularJS 1.x 学习笔记

    2016年,.net 会有很多大更新 ASP.NET 5 在此之前我都是用着古老的.net做开发的 (WebForm + IIS) 为了接下来应对 .net 的新功能,我特地去学习了一下基本的 MVC ...

  6. Big Data Analytics for Security(Big Data Analytics for Security Intelligence)

    http://www.infoq.com/articles/bigdata-analytics-for-security This article first appeared in the IEEE ...

  7. delphi线程的创建、挂起、激活与终止(用绘图做实验,简单又好用)

    unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

  8. HDOJ(HDU) 1562 Guess the number(水题,枚举就行)

    Problem Description Happy new year to everybody! Now, I want you to guess a minimum number x betwwn ...

  9. linux内存管理子系统

    一.Linux内存管理模型 1.虚拟地址与物理地址的映射 2.物理地址的分配二.虚拟地址与物理地址的映射 1.虚拟地址空间分布 32位处理器有32根地址总线,可访问4G的物理空间.其中有0-3G为用户 ...

  10. BNUOJ34990--Justice String (exkmp求最长公共前缀)

    Justice String Given two strings A and B, your task is to find a substring of A called justice strin ...