USE [DataBaseName]
GO
/****** Object:  StoredProcedure [dbo].[sp_check_deadlock]    Script Date: 07/04/2014 13:49:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[sp_check_deadlock]
  as
set nocount on
  /*
  select
  spid As 被锁进程ID,
  blocked As 锁进程ID,
  status  As 被锁状态,
  SUBSTRING(SUSER_SNAME(sid),1,30) 被锁进程登陆帐号,
  SUBSTRING(hostname,1,12) As 被锁进程用户机器名称,
  SUBSTRING(DB_NAME(dbid),1,10) As 被锁进程数据名称,
  cmd 被锁进程命令,
  waittype 被锁进程等待类型
  FROM master..sysprocesses
  WHERE blocked>0
  
  --dbcc inputbuffer(66) 输出相关锁进程的语句
  -- kill 24   杀掉被锁进程
   */
  
  --创建锁进程临时表
  CREATE TABLE #templocktracestatus ( 
          EventType varchar(max), 
          Parameters INT, 
          EventInfo varchar(max) 
          )
  --创建被锁进程临时表
  CREATE TABLE #tempbelocktracestatus ( 
          EventType varchar(max), 
          Parameters INT,
          EventInfo varchar(max) 
          )
--创建之间的关联表
CREATE TABLE #locktracestatus ( 
        belockspid INT, 
        belockspidremark varchar(max), 
        belockEventType varchar(max), 
        belockEventInfo varchar(max), 
        lockspid INT, 
        lockspidremark varchar(max), 
        lockEventType varchar(max), 
        lockEventInfo varchar(max) 
        )
  
  --获取死锁进程
  DECLARE dbcc_inputbuffer CURSOR READ_ONLY
 FOR select spid 被锁进程ID,blocked 锁进程ID  FROM master..sysprocesses   WHERE blocked>0
  
  DECLARE @lockedspid int
  DECLARE @belockedspid int
  
  OPEN dbcc_inputbuffer
  
  FETCH NEXT FROM dbcc_inputbuffer INTO  @belockedspid,@lockedspid    WHILE (@@fetch_status <> -1)
  BEGIN
 
  IF (@@fetch_status <> -2)
  BEGIN
--print '被堵塞进程' 
--select @belockedspid 
--dbcc inputbuffer(@belockedspid) 
--print '堵塞进程' 
--select @lockedspid 
--dbcc inputbuffer(@lockedspid)
   INSERT INTO #tempbelocktracestatus 
   EXEC('DBCC INPUTBUFFER('+@belockedspid+')')
 
   INSERT INTO #templocktracestatus  
   EXEC('DBCC INPUTBUFFER('+@lockedspid+')')
 
   INSERT INTO #locktracestatus 
   select @belockedspid,'被锁进程',a.EventType,a.EventInfo,@lockedspid,'锁进程',b.EventType,b.EventInfo
     from #tempbelocktracestatus  a,#templocktracestatus b
  END
 
  FETCH NEXT FROM dbcc_inputbuffer INTO @belockedspid,@lockedspid
  END
  
  CLOSE dbcc_inputbuffer
  DEALLOCATE dbcc_inputbuffer
  select * from #locktracestatus
  
  return (0) -- sp_check_deadlock
  -- sp_who
  -- kill 24   杀掉被锁进程

Sql解锁 数据库死锁检测的更多相关文章

  1. 解决SQL server2005数据库死锁的经验心得

    前段时间提到的"sql server 2005 死锁解决探索",死锁严重,平均每天会发生一次死锁,在解决和处理SQL server2005死锁中查了很多资料和想了很多办法,后来我们 ...

  2. 快速定位MS Sql Server 数据库死锁进程

    最近在做一个大型项目,由于数据设计采用离散型数据库设计,以方便需求变更及用户自定义流程要素,因为要素用户自定义,数据完整性靠代码约束变得不太现实,只能依靠表间关系来约束,结果因此导致数据的操作经常产生 ...

  3. [Bug] 解决 Sql Server 数据库死锁问题

    SELECT request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tra ...

  4. SQL Server 数据库中关于死锁的分析

    SQL Server数据库发生死锁时不会像Oracle那样自动生成一个跟踪文件.有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应). ...

  5. 转载 50种方法优化SQL Server数据库查询

    原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...

  6. SqlServer定时备份数据库和定时杀死数据库死锁解决

    上周五组长对我说了一句要杀死数据库的死锁进程,有时候同一时刻不停写入数据库会造成这种情况的发生,因为自己对数据库不是很熟悉,突然组长说了我也就决定一定要倒腾一下,不然自己怎么提高呢?现在不研究,说不定 ...

  7. MS Sql Server 数据库或表修复(DBCC CHECKDB)

    MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL ...

  8. 面试官:请用SQL模拟一个死锁

    文章首发于公众号:BiggerBoy 有读者说面试被问到怎么用SQL模拟数据库死锁? 这位读者表示对Java中的死锁还是略知一二的,但是突然用SQL写死锁的案例之前还真没遇到过,这个问题没答上来.所以 ...

  9. 当前数据库普遍使用wait-for graph等待图来进行死锁检测

    当前数据库普遍使用wait-for graph等待图来进行死锁检测 较超时机制,这是一种更主动的死锁检测方式,innodb引擎也采用wait-for graph SQL Server也使用wait-f ...

随机推荐

  1. ruby eclipse调试

    rubyinstaller 1.9.3eclipse Keplermarketplace ruby dltk 5.0ruby devkit(Ruby 1.8.7 and 1.9.3) DevKit-t ...

  2. VM Depot 助您使用本地开源软件架设开发 Web 站点

     发布于 2014-04-25 作者 云 浪生 使用 VM Depot 中的镜像在 Azure 上创建.开发.部署网站与应用不仅方便快捷而且省时省力!感谢开源社区的大力支持,我们的VM Depot ...

  3. XUTils框架的学习(三)

    前面两章说了xutils框架的引入和注解模块的使用和数据库模块的使用,想了解的朋友可以去看看. 前面在说数据库模块的操作的时候是手动创建数据库并保存在asset文件夹里面,再通过I/O将数据库写进应用 ...

  4. Java基础—异常处理总结

      异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地 ...

  5. AppFabric 版本区分

    目前CSDN上可以下载到的 AppFabric有两个版本: 1, WindowsServerAppFabricSetup_x64_6.1.exe,    2010/12/3 发布的, 不推荐使用,Wi ...

  6. JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强

    对上篇博客的最后那个表格隔行高亮显示加了个功能,鼠标监听和年龄从小到大排序. 演示代码: <html> <head> <title>DHTML技术演示---表格中页 ...

  7. nyoj 37回文串

    述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串.现在要求你,给你一个字符串,可 ...

  8. bzoj 3531 [Sdoi2014]旅行(树链剖分,线段树)

    3531: [Sdoi2014]旅行 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 876  Solved: 446[Submit][Status][ ...

  9. android camera(一):camera模组CMM介绍

    一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段 ...

  10. tomcat详细日志配置

    在server.xml里的<host>标签下加上<Valve className="org.apache.catalina.valves.AccessLogValve&qu ...