目录
- 第一步:查询死锁语句
- 第二步:查询发生阻塞或死锁的当前数据库
- 第三步:查询发生阻塞或死锁的SQL语句
- 第四步:杀死锁
简单查询死锁,如下四步可以轻松解决:
第一步:查询死锁语句
1:条件是 blocked <> 0
select dbid,* from sys.sysprocesses
where 1=1
and spid >50
and blocked <> 0
–and spid= 62
查询结果如下图所示:
以上查询得出:
- 受影响的数据库ID 是 5;
- 受到阻塞的会话有1301、1306、869、109;
- 阻塞会话是961;
第二步:查询发生阻塞或死锁的当前数据库
1:通过第一步查询,知道数据库ID 为 DBID=5。
2:sp_helpdb 或 Select name,dbid from master.sys.sysdatabases 查询数据库名称
第三步:查询发生阻塞或死锁的SQL语句
输出死锁的执行的语句:dbcc inputbuffer(961)
语句如下:
select o.tp_Login,o.tp_Title, CONVERT(varchar(10),a.TimeCreated,120) as accessingdate,count(*) as docnum, \’sps\’ as type from UserData u,AllDocs a, userinfo o ,webs w where a.ListId = u.tp_ListId and a.Id = u.tp_docID and w.Id = a.WebId and w.SiteId = a.SiteId and w.SiteId = o.tp_SiteID and……….以后省去
第四步:杀死锁
kill 961
之后再从第一步进行查询,看是否还存在死锁;
从第二步、第三步,查询出了出问题的锁死数据库及SQL语句,便于分析彻底解决死锁问题。
以下是sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在master 数据库中。
到此这篇关于如何通过sysprocesses 简单查询死锁及解决死锁最新方案的文章就介绍到这了,更多相关sysprocesses查询死锁内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!
您可能感兴趣的文章:
- 利用sys.sysprocesses检查SqlServer的阻塞和死锁
- Sqlserver死锁查询以及解锁方法
- Sqlserver之死锁查询以及批量解锁的实现方法
- SqlServer查询和Kill进程死锁的语句
- Oracle 查询死锁并解锁的终极处理方法
- 查找sqlserver查询死锁源头的方法 sqlserver死锁监控