sql server无法kill掉会话,会话一直处于killed/rollback
【1】问题
进程一直killed不掉
使用 kill 129之后,
可以使用 kill session_id/spid with statusonly 查看回滚进度
【2】基本方案 使用 tcpview(推荐)
下载TCPView (1.4 MB)
现在从Sysinternals Live运行。
运行于:
- 客户端:Windows 8.1及更高版本。
- 服务器:Windows Server 2012及更高版本。
找到对应的远程连接信息,然后杀死
但很明显有缺陷,要是一个IP有多个连接过来,你根本无法区分哪个是正常的 哪个是僵死的;
而且,本身如果是本地操作,也无法明确分析
【3】使用 process explorer(不要用,会出大问题)
【3.1】下载
Process Explorer详情页及下载地址请参考:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
Process Explorer可以查看进程打开的文件、目录、加载的dll、线程信息等。上述页面有详细介绍。
【3.2】安装,使用
使用参考:https://www.cnblogs.com/alvingofast/p/ProcessMonitor.html
解压即用:
【3.3】结合mssql,解决无法杀死的进程
(1)准备工作,我用其他机器连过来,模拟了一个死循环
while 1=1 begin print 1 end
(2)查看请求对应的 windows 线程
(3)使用 process explorer,找到sql server进程,然后双击,查看线程
如果有多个sql server进程,则从sscm中查看进程号
(4)找到对应的线程后,kill
【3.4】杀死后故障问题
解决:
(1)用【2】基本方案 使用 tcpview(推荐)中办法解决
(2)重启引擎实例,是因为我们终止了一个线程,导致查看系统表中的东西都查不到了;会报错;
【错误处理】缺少功能:winsta!WinStationConnectW
无法在此版本的Windows上运行:
缺少功能:winsta!WinStationConnectW
无法在此版本的Windows上运行:
缺少功能:winsta!WinStationShadow
无法在此版本的Windows上运行:
缺少功能:winsta!WinStationGetProcessSid
解决:
安装一下:windows6.1-kb2533623
下载参考:http://www.3h3.com/soft/119473.html