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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM