Sql 报 “已超过了锁请求超时时段”
问题:
某日网站的某个页面突然卡死,DeBug提示已超过了锁请求超时时段的原因
原因:
应该是数据库表体积很大,处理的时候费事,因为几乎所有数据库操作都需要加或多或少的锁,所以会超时。
或者是某一个存储过程未提交事务,导致超时。
解决方案:
首先可以使用 select * from sys.sysprocesses where blocked<>0 查查有哪些进程阻塞了。然后拿到SPID,
运行DBCC INPUTBUFFER(SPID)来检查是什么语句造成,找到你的那个删表进程之后,执行 kill spid,杀掉阻塞的进程。
但是注意,有些操作由于阻塞时间过长,所以就算你kill掉,也要回滚同等的时间,
这个你要注意,当出现这个情况时,可能要么重启服务,要么就等了。
当你需要再次删表的时候,建议先truncate table ,然后再drop,这样速度快了不少。提醒要注意做好备份工作,免得发生意外,比如删错表名类似的表。