SQL SERVERkilled/rollback 会话一直running
问题描述
A使用linkserver连接B
一些用了Linkserver的SQL莫名其妙的执行很长时间(平时是很快的),
然后手动Kill掉后,
KILL 63
会话也一直处于killed/rollback running状态,
使用以下SQL查看,
KILL 63 WITH STATUSONLY;
SPID 63: transaction rollback in progress. Estimated rollback completion: 0%. Estimated time remaining: 0 seconds.
原因分析
1.在B上的会话被堵塞。(这种情况亲测)
2.由于网络或服务异常导致B上的会话结束或异常不能返回结果。
解决方法
1.这种僵尸会话,实例重启回消失。
2.使用TCPView关闭连接。
TCPView下载地址
https://docs.microsoft.com/zh-cn/sysinternals/downloads/tcpview
在A上打开TCPView,输入B的IP,搜索,
sqlserver与B建立的连接可能很多,所以要以create time区分。
找到该连接后,右键→close Connection,(注意是close Connection,不是Kill process,kill process 会将实例杀掉)