1. use master
  2.  
  3. if exists (select * from dbo.sysobjects where id =
  4. object_id(N'[dbo].[sp_who_lock]')
  5. and OBJECTPROPERTY(id, N'IsProcedure') = 1)
  6. drop procedure [dbo].[sp_who_lock]
  7. GO
  8. create procedure sp_who_lock
  9. as
  10. begin
  11. declare @spid int,@bl int,
  12. @intTransactionCountOnEntry int,
  13. @intRowcount int,
  14. @intCountProperties int,
  15. @intCounter int
  16. create table #tmp_lock_who (id int identity(1,1)
  17. ,spid smallint,bl smallint)
  18.  
  19. IF @@ERROR<>0 RETURN @@ERROR
  20.  
  21. insert into #tmp_lock_who(spid,bl) select 0 ,blocked
  22. from (select * from sysprocesses where blocked>0 ) a
  23. where not exists(select * from (select * from
  24. sysprocesses where blocked>0 ) b
  25. where a.blocked=spid)
  26. union select spid,blocked from sysprocesses where blocked>0
  27. IF @@ERROR<>0 RETURN @@ERROR
  28.  
  29. -- 找到临时表的记录数
  30. select @intCountProperties = Count(*),@intCounter = 1
  31. from #tmp_lock_who
  32.  
  33. IF @@ERROR<>0 RETURN @@ERROR
  34.  
  35. if @intCountProperties=0
  36. select '现在没有阻塞和死锁信息' as message
  37. -- 循环开始
  38. while @intCounter <= @intCountProperties
  39. begin
  40. -- 取第一条记录
  41. select @spid = spid,@bl = bl
  42. from #tmp_lock_who where id = @intCounter
  43. begin
  44. if @spid =0
  45. select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10))
  46. + '进程号,其执行的SQL语法如下'
  47. else
  48. select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被'
  49. + '进程号SPID:'+ CAST(@bl AS VARCHAR(10))
  50. +'阻塞,其当前进程执行的SQL语法如下'
  51. DBCC INPUTBUFFER (@bl )
  52. end
  53. -- 循环指针下移
  54. set @intCounter = @intCounter + 1
  55. end
  56. drop table #tmp_lock_who
  57. return 0
  58. end

查找 SqlServer死锁的更多相关文章

  1. 一次查找sqlserver死锁的经历

    查找bug是程序员的家常便饭,我身边的人喜欢让用户来重现问题.当然他们也会从正式服务器上下载错误log,然后尝试分析log,不过当错误不是那种不经思考就可识别的情况,他们就会将问题推向用户,甚至怪罪程 ...

  2. sqlserver 死锁原因及解决方法

    其实所有的死锁最深层的原因就是一个:资源竞争 表现一: 一个用户A 访问表A(锁住了表A),然后又访问表B,另一个用户B 访问表B(锁住了表B),然后企图访问表A,这时用户A由于用户B已经锁住表B,它 ...

  3. 模拟 SQLSERVER 死锁

    环境: sqlserver 2008   事务(进程 ID (n))与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品.请重新运行   死锁原理: 如两个任务 任务1,已经锁定R1,再进行请求R2& ...

  4. SqlServer死锁与阻塞检测脚本

    IF EXISTS (SELECT * FROM sysobjects WHERE [name] = 'sp_Lock_Scan') DROP PROCEDURE sp_Lock_Scan GO CR ...

  5. sqlserver 死锁查看辅助存储过程

    USE [master] GO /****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 03/23/2016 14:17:49 ...

  6. SQLSERVER 死锁标志

    最开始做DBA的时候,整天死锁到头痛1222,至今都能回想到这个错误窗口: 死锁定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待 ...

  7. 验证SQLServer死锁进程

    SELECT '现在没有阻塞和死锁信息' AS message -- 循环开始WHILE @intCounter <= @intCountProperties BEGIN-- 取第一条记录 SE ...

  8. sqlserver 死锁相关

    参考 https://www.cnblogs.com/fuyuanming/p/5783421.html -- 查询死锁 select request_session_id spid, OBJECT_ ...

  9. 查找sqlserver数据库中,查询某值所表名和字段名

    有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,通过一个存储过程实现的.只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名. 前提是要将这个存储过程放在所查询的数据库. CR ...

随机推荐

  1. Python基础学习8---list列表的操作

    a_list = ['hello','world',1,'shanghai',3.99] #列表添加操作的4种方法 #1. 通过+ 字符来拼接 a_list = a_list + [1,'wuhan' ...

  2. ubuntu中文论坛

    http://forum.ubuntu.org.cn/index.php?sid=e40344219c81dbc4b289135a71db4efd

  3. CF 675 div2C 数学 让环所有值变为0的最少操作数

    http://codeforces.com/contest/675/problem/C 题目大意: 给一个环,标号为1-n,然后能从n回到1.让这个环的值为0,最少需要的操作数是多少? 这道题目呀.. ...

  4. linux下libreoffice安装测试

    一.Linux安装 wget http://download.documentfoundation.org/libreoffice/stable/4.4.6/rpm/x86_64/LibreOffic ...

  5. IIS判断W3WP进程对应哪个网站

    IIS 6 (Win2003 )中查看某个应用程序池对应那个 W3WP.exe 进程,可以使用如下命令,输出结果类似如下: C:\WINDOWS\system32>cscript iisapp. ...

  6. Android传感器编程带实例(转)

    源:http://www.cnblogs.com/xiaochao1234/p/3894751.html 看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推 ...

  7. cakephp , the subquery

    Cakephp 框架帮我们做了很多的工作,的确省了我们很多工作,提高了效率. 但是,碰到一些比较复杂的查询时,还是有些问题,官方的cookbook api 有说明一些详细的用法,但感觉还是不太够,有些 ...

  8. gen_grant_sel.sql

    set echo off feedback off verify off pagesize 0 linesize 120 define v_grantee=&1 define v_grant_ ...

  9. 页面加载完毕执行多个JS函数

    通常我们需要在打开页面时加载脚本,这些脚本必须在页面加载完毕后才可以执行,因为这时候DOM才完整,可以利用window.onload确保这一点,如:window.onload=firstFunctio ...

  10. String Matching Content Length

    hihocoder #1059 :String Matching Content Length 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 We define the ...