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
新聞熱點
疑難解答