查杀死锁
来源:互联网 发布:演讲倒计时软件 编辑:程序博客网 时间:2024/05/16 06:52
Create Proc [dbo].[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
Create Proc [dbo].[p_killspid] @dbname Varchar(200) --要关闭进程的数据库名 As Declare @sql Nvarchar(500) Declare @spid Nvarchar(20) Declare #tb Cursor For Select spid = Cast(spid As Varchar(20)) From master..sysprocesses Where dbid = Db_id(@dbname) Open #tb Fetch Next From #tb Into @spid While @@fetch_status = 0 Begin Exec( 'kill ' + @spid) Fetch Next From #tb Into @spid End Close #tb Deallocate #tb
0 0
- SQLserver查杀死锁
- 查杀死锁
- 查杀死锁进程的
- Oracle DBA日常任务——查杀死锁
- 杀死锁
- 查询Sqlserver数据库死锁的一个存储过程 (查杀死锁进程)
- 杀死锁和进程
- 杀死锁进程
- 杀死被锁进程
- ORACLE批量杀死锁
- 检测和杀死锁
- ORACLE 杀死锁进程
- Linux下查进程,杀死进程,和重启进程
- linux系统系统管理查进程和杀死进程
- Oracle - 查看锁,杀死会话
- 查看锁表进程和杀死锁
- oracle-杀死锁死的进程
- ORACLE一般杀死锁进程的方法
- 有关java基本类型的默认值和取值范围
- 架构设计:系统间通信(11)——RPC实例Apache Thrift 上篇
- Java 接口
- Android Studio Error: Error:CreateProcess error=216, This version of %1 is not compatible with the v
- your app does not have the latest code changes because ..
- 查杀死锁
- Android GreenDao3.2配置及使用详解
- tomcat配置文件server.xml详解
- 第一天
- Android下使用TCPDUMP抓包Wireshark分析数据啦。
- 清除浮动的原理和方法
- IOS 极光推送消息
- 统计学习方法(四) 支撑向量机
- svn 清理失败 (cleanup 失败) 的解决方法