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. POJ_2739_Sum_of_Consecutive_Prime_Numbers_(尺取法+素数表)

    描述 http://poj.org/problem?id=2739 多次询问,对于一个给定的n,求有多少组连续的素数,满足连续素数之和为n. Sum of Consecutive Prime Numb ...

  2. JAVA 数组常用技巧

    1.  在Java中输出一个数组(Print an array in Java) int[] intArray = { 1, 2, 3, 4, 5 }; String intArrayString = ...

  3. (转载)C++创建对象的两种方法

    (转载)http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(para ...

  4. CPU acceleration status:HAXM must be updated(version 1.1.1<6.0.1)

    终于上手as了,感觉很爽 但是感觉也特闹心啊 还好有stackoverflow(这特么才是一个神奇的网站好吗) 废话少说 记录一下: 前面历经的磨难暂时不说了,就这个CPU acceleration ...

  5. Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1357  Solved: 446[Submit][Statu ...

  6. 多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客

    多IDC数据分布--MySQL多机房部署 - 学习笔记 - 51CTO技术博客 多IDC数据分布--MySQL多机房部署

  7. IoC/DIP其实是一种管理思想

    关于IoC的的概念提出来已经很多年了,其被用于一种面象对像的设计.我在这里再简单的回顾一下这个概念.我先谈技术,再说管理. 话说,我们有一个开关要控制一个灯的开和关这两个动作,最常见也是最没有技术含量 ...

  8. seq命令

    seq 5 seq 5 >1.txt 其中的>是覆盖 seq 1 5 用来产生从数1到数5之间的所有整数 或, seq 5

  9. NoSQL数据库的四大分类表格分析

  10. js select级联,上面分类,下面是内容

    js select级联,上面分类,下面是内容. js级联效果如下: 分类: 请选择 水果 蔬菜 其他 内容: // html和js代码如下:     <html>      <hea ...