查看数据库里阻塞和死锁情况.sql

查看数据库里阻塞和死锁情况.sql

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

/***************************************************************************

//  创建 : fengyu  邮件 : maggiefengyu@tom.com  日期 :2004-04-30

//  修改 : 从http://www.csdn.net/develop/Read_Article.asp?id=26566学习到并改写 

//  说明 : 查看数据库里阻塞和死锁情况

***************************************************************************/

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 sp_who_lock

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100639.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux Ubuntu 下安装与卸载 JDK,亲测有效~[通俗易懂]

    Linux Ubuntu 下安装与卸载 JDK,亲测有效~[通俗易懂]习惯了在Windows系统上搭建JDK环境,也来试试在Linux上搭建JDK环境,经过最近两天的研究,将自己的心得分享给大家。由于本人水平有限,错误在所难免,还请各路豪杰不吝赐教~  使用apt-get在线安装与卸载,解压.tar.gz包手动安装与卸载

    2022年6月25日
    27
  • 公司这套架构统一处理 try…catch 这么香,求求你不要再满屏写了,再发现扣绩效!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:小李子说程序 www.toutiao.com/i6878184496945070604 前言 软件开发spri…

    2021年6月28日
    105
  • uniapp真机调试安卓_车丝机怎么调试大小丝

    uniapp真机调试安卓_车丝机怎么调试大小丝真机测试规则1、不能用localhost或127.0.0.1:报failabort错误2、ipconfig下不能用以太网的IPv4:报failtimeout错误3、连接同一个WIFI:(1)笔记本开放热点给手机连接(2)笔记本和手机连接同一个WIFI4、一定要关掉防火墙,或者设置这几个地址、端口开放也行,傻瓜式点的就是全部关掉防火墙。更多教程JavaW…

    2025年9月19日
    4
  • Java开发框架!高级java工程师简历模板[通俗易懂]

    第一部分必读系列:01.学习算法和刷题的思路指南02.学习数据结构和算法读什么书03.动态规划解题套路框架04.动态规划答疑篇05.动态规划答疑篇06.回溯算法解题套路框架07.二分查找解题套路框架08.滑动窗口解题套路框架09.双指针技巧总结10.BFS算法套路框架11.Linux的进程、线程、文件描述符是什么12.Git/SQL/正则表达式的在线练习平台第二部分动态规划系列:01.动态规划设计:最长递增子序列02.经典动态规划:0-1背包问题03.经典动态规划:完

    2022年4月17日
    45
  • stm32l476芯片介绍(nvidia驱动无法找到兼容的图形硬件)

    前言最近购买了IoTBoard潘多拉开发板来研究,学习使用STM32CubeMX工具配置SPI,然后驱动了TFTLCD。潘多拉开发板的TFTLCD驱动IC是ST7789V2,结合原子哥的TFTLCD代码,分享自己的硬件SPI+软件SPI驱动ST7789V2+中文显示。关于STM32CubeMX的使用可以参考微雪课堂STM32CubeMX系列教程。STM32L475硬件SPI+软…

    2022年4月17日
    99
  • C-V2X 频点-频段简介[通俗易懂]

    C-V2X 频点-频段简介[通俗易懂]1.缩略语1.Bband频段一个频率的范围或者频谱的宽度2.ULUplink上行链路3.DLDownlink下行链路4.EARFCNE-UTRAAbsoluteRadioFrequencyChannelNumber载波频点号5.FULF_{UL}FUL​FrequencyUplink载频上行频率6.NULN_{UL}NUL​EARFCNUplink载频上行频点号7.FDLF_{DL}FDL​FrequencyDownlink 载频下行频率8.

    2022年9月1日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号