CREATE<wbr>procedure [dbo].[sp_who_lock]<br>as<br>begin<br>declare @spid int,@bl int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intTransactionCountOnEnt<wbr>ry<wbr>int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intRowcount<wbr><wbr><wbr>int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intCountProperties<wbr><wbr>int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intCounter<wbr><wbr><wbr>int<br><wbr>create table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)<br><wbr><br><wbr>IF @@ERROR<>0 RETURN @@ERROR<br><wbr><br><wbr>insert into #tmp_lock_who(spid,bl) select<wbr>0 ,blocked<br><wbr><wbr>from (select * from master..sysprocesses where<wbr>blocked>0 ) a<br><wbr><wbr>where not exists(select * from (select * from master..sysprocesses where<wbr>blocked>0 ) b<br><wbr><wbr>where a.blocked=spid)<br><wbr><wbr>union select spid,blocked from master..sysprocesses where<wbr>blocked>0</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>IF @@ERROR<>0 RETURN @@ERROR<br><wbr><br>-- 找到临时表的记录数<br><wbr>select<wbr>@intCountProperties = Count(*),@intCounter = 1<br><wbr>from #tmp_lock_who<br><wbr><br><wbr>IF @@ERROR<>0 RETURN @@ERROR<br><wbr><br><wbr>if @intCountProperties=0<br><wbr>select '现在没有阻塞和死锁信息' as message</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
-- 循环开始
while @intCounter <= @intCountProperties
begin
-- 取第一条记录
<wbr>select<wbr>@spid = spid,@bl = bl<br><wbr>from #tmp_lock_who where id = @intCounter<br><wbr>begin<br><wbr>if @spid =0<br><wbr><wbr><wbr>select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'<br><wbr>else<br><wbr><wbr><wbr>select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'<br><wbr>DBCC INPUTBUFFER (@bl )<br><wbr>end</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
-- 循环指针下移
<wbr>set @intCounter = @intCounter + 1<br>end</wbr>
drop table #tmp_lock_who
return 0
end
分享到:
相关推荐
查看被锁表: select spId from master..SysProcesses where db_Name(dbID) = '数据库名称' and spId <> @@SpId and dbID <> 0 解除锁: exec ('Kill '+cast(@spid as varchar)) 查看被锁表: ...
SQLServer查询被锁的表和解锁!
SQLServer常见锁表优化语句
sql server锁机制,介绍sql的各种锁的文档
介绍SQlServer中的锁的机制,其中包括一些例子
SQLServer200数据库自动杀锁。 很不错哦,你懂得!初学者必备。祝您成功!
SQL SERVER 2008 R2 查看和杀死死锁进程。数据库进程死锁是一个很严重的问题,快速定位到死锁的进程尤为重要。
关于SQLserver2008的锁机制描述
SQLServer+ 免安装版 SQLServer+是在原有SQLServer2000的基础上改善了数据库安装的繁锁性,让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外...
SQlServer中的锁机制,并有示例作为参考。
自己整理的SQL Server 的事务和锁
可以自动检测sql server 的数据锁,发现后可以自动kill 进程,释放锁
SQL SERVER 有资源紧张时,常会有死锁发生,用此工具可进行解锁操作。
资源名称:SQL server锁的机制资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server ...
SQL Server和Oracel中的锁和死锁
SQLServer事务与锁的基础概念总结 - 小麦的日志 - 网易博客.mht
该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接
如何使用SQL Server Profiler来监控数据库死锁。SQL Server Profiler配置及查看锁表信息,提取锁表日志和对应SQL语句。
纯英文,专门解析自旋锁起因及解决方法,SQL SERVER DBA必备