事件起因:一个用户提交不了业务数据 故障表现:
select * from bstable where id=xxx; select count(1) from bstable; 上面两个查询超时。 select * from usertable with(nolock) where id=xxx; 加上with(nolock) 正常。
故障分析: 因为with(nolock) 可以执行,且别的操作这个表的用户正常 所以判断应该是行锁导致数据异常。
故障处理: DBCC OPENTRAN 查询未提交的事务id 然后kill 掉这个事务id。
检查: select * from usertable where id=xxx; select count(1) from usertable; 执行正常,用户业务正常。
总结:事务提交异常,假死的事务导致了行锁,杀掉可恢复
注意事项:判断是行锁,故障状态已经修复,没有sql证明是行锁