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

【参考文档】

潇湘隐者:https://www.cnblogs.com/kerrycode/p/5981763.html

posted @ 2021-04-14 13:04  郭大侠1  阅读(2741)  评论(0编辑  收藏  举报