SQL中如何检查死锁
编写人:CC阿爸
2014-6-15
在日常SQL数据库的操作中,SQL偶尔会出现表被死锁的问题。比如:
在执行事务时,突然中止事务。系统肯定会锁表。
大批量数据操作时,由于网络 机器性能等相关因素,都会偶尔引起死锁。
这也是SQL没有oracle强大的功能之一。
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
dbcc inputbuffer
--查看有无锁表
use master
select * from sysprocesses where blocked<>0
--查看锁表的信息
sp_who 51
DBCC INPUTBUFFER (79)
EXEC sp_lock 51
--删除被锁的进程
kill 57