create proc p_lockinfo
@kill_lock_spid bit=1,  --是否杀掉死锁的进程,1 杀掉, 0 仅显示
@show_spid_if_nolock bit=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示
as
declare @count int,@s nvarchar(1000),@i int
select id=identity(int,1,1),标志,
进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,
数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,
登陆时间=login_time,打开事务数=open_tran, 进程状态=status,
工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,
域名=nt_domain,网卡地址=net_address
into #t from(
select 标志='死锁的进程',
 spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,
 status,hostname,program_name,hostprocess,nt_domain,net_address,
 s1=a.spid,s2=0
from master..sysprocesses a join (
 select blocked from master..sysprocesses group by blocked
 )b on a.spid=b.blocked where a.blocked=0
union all
select '|_牺牲品_>',
 spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,
 status,hostname,program_name,hostprocess,nt_domain,net_address,
 s1=blocked,s2=1
from master..sysprocesses a where blocked<>0
)a order by s1,s2

select @count=@@rowcount,@i=1

if @count=0 and @show_spid_if_nolock=1
begin
insert #t
select 标志='正常的进程',
 spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,
 open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address
from master..sysprocesses
set @count=@@rowcount
end

if @count>0
begin
create table #t1(id int identity(1,1),a nvarchar(30),b Int,EventInfo nvarchar(255))
if @kill_lock_spid=1
begin
 declare @spid varchar(10),@标志 varchar(10)
 while @i<=@count
 begin
  select @spid=进程ID,@标志=标志 from #t where id=@i
  insert #t1 exec('dbcc inputbuffer('+@spid+')')
  if @标志='死锁的进程' exec('kill '+@spid)
  set @i=@i+1
 end
end
else
 while @i<=@count
 begin
  select @s='dbcc inputbuffer('+cast(进程ID as varchar)+')' from #t where id=@i
  insert #t1 exec(@s)
  set @i=@i+1
 end
select a.*,进程的SQL语句=b.EventInfo
from #t a join #t1 b on a.id=b.id
end

转载于:https://www.cnblogs.com/wanyuan8/archive/2011/09/15/2177786.html

查看存储过程死锁的存储过程相关推荐

  1. oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法

    oracle中"ORA-00060: 等待资源时检测到死锁" 或存储过程编译卡死 解决方法 参考文章: (1)oracle中"ORA-00060: 等待资源时检测到死锁& ...

  2. mysql查询触发器_mysql查看所有触发器以及存储过程等操作集合【转】

    1. mysql查询所有表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' AND  TAB ...

  3. 第15章_存储过程与函数(创建存储过程、调用存储过程、存储函数的使用、存储过程和函数的查看、修改、删除)

    第15章_存储过程与函数 第15章_存储过程与函数 1. 存储过程概述 1.1 理解 1.2 分类 2. 创建存储过程 2.1 语法分析 2.2 代码举例 3. 调用存储过程 3.1 调用格式 3.2 ...

  4. mysql 存储过程 定时_MySQL存储过程和定时任务

    什么是存储过程 存储例程是存储在数据库服务器上的一组sql语句,这些语句通过在查询中调用指定的名称来执行. 存储过程是存储在数据库中的一组SQL语句 存储过程是mysql中定义的方法 可以通过调用方法 ...

  5. mysql的存储过程原理_mysql存储过程原理与用法详解

    本文实例讲述了Mysql存储过程原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是存储过程 存储过程的创建 存储过程的使用 查看存储过程 修改存储过程 删除存储过程 首发日期:2018- ...

  6. 存储过程系列之存储过程具体操作过程及sql数据库调用

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...

  7. mysql 存储过程求和_MySQL - 存储过程和函数

    MySQL - 存储过程和函数 创建和调用存储过程 -- 创建stu_group()存储过程,封装 分组查询总成绩,并按照总成绩升序排序的功能 -- 注意: DELIMITER 必须写在一行的最前面, ...

  8. @select 怎么写存储过程_MySQL4:存储过程和函数

    什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...

  9. mysql 扩展存储过程_MySQL4:存储过程和函数

    什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...

最新文章

  1. Python学习之字符串格式化
  2. 修改注册表实现程序开机自启动
  3. 2019牛客暑期多校训练营(第七场)D Number(思维)
  4. 几个免费高质量图标搜索引擎。
  5. Jibx Jersey2集成
  6. cacti监控 磁盘I/O
  7. c 语言 二进制 十进制,C 语言实例 - 二进制与十进制相互转换
  8. pat03-树3. Tree Traversals Again (25)
  9. UITableView介绍 之 复杂cell的高度计算
  10. oracle数据库自动备份控制文件的目录,16.5 控制文件的自动备份和还原(1)
  11. 如何通过qq发消息获取他人的IP地址。
  12. NO.5 Android Opencv 相机人脸识别
  13. 域名已注册好,如何做网站?
  14. 常用Linux命令行技巧
  15. 台电固态硬盘用什么测试软件,台电固态硬盘怎么样(台电固态硬盘测评结果出炉 )...
  16. Android应用商店——项目介绍
  17. IDC云灾备白皮书:云灾备支持未来业务持续性新需求
  18. python pandas excel 排序_Python pandas对excel的操作实现示例
  19. 实现微信打开App功能
  20. C Primer Plus (第六版)编程练习参考答案

热门文章

  1. iscsi网络磁盘共享
  2. vb打开服务器excel文件路径,咨询下VB如何打开EXCEL文件并将内容显示在listbox中
  3. Java怎么把数组怎么放入set,如何将数组转换为Java中的Set
  4. 昆仑通态通用版找不到驱动_2021深圳新安西门子伺服驱动电机回收合作共赢
  5. ssm框架实现学生成绩管理系统
  6. Shippable和Packet合作提供原生ARM CI/CD
  7. 【NOIP2016】愤怒的小鸟
  8. SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例
  9. PHP中file_exists与is_file,is_dir的区别介绍
  10. CSS a控制超链接文字样式