日期:2014-05-18  浏览次数:20553 次

额,中招了,错误:1222:已超过了锁请求超时时段
昨天晚上此表放着创建索引,今天查询不出数据,执行select * from tb 一直在查询中,没结果

准备删除此表,出现了1222:已超过了锁请求超时时段


上网查都是说创建一个Sp_KillAllProcessInDB 存储过程杀掉进程

试过了,还是不能查询此表或者删除此表,,,怎么办?



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