SQLServer會話KILL不掉,一直處於KILLED/ROLLBACK狀態情形淺析
今天遇到一個很奇怪的情況,發現一個會話異常,這個會話只是在執行一個簡單的儲存過程,裡面使用了連結伺服器(Linked Server)查詢另外一臺伺服器資料(儲存過程裡面沒有任何顯性事務、UPDATE、DELETE操作,只有幾個簡單的SELECT查詢,其中有兩個查詢使用了連結伺服器Linked Server,由於生產環境,不好貼出SQL語句),在DPA監控工具裡面,發現該會話引起了非常長的OLEDB等待時間,手工執行測試,發現並不耗費很長時間,KILL該會話後, 回滾狀態已完成一直是0%, 估計剩餘時間也一直是0秒。如下截圖所示:
KILL 129 WITH STATUSONLY;
SPID 129: 正在進行事務回滾。估計回滾已完成: 0%。估計剩餘時間: 0 秒。
如下所示,這個會話的start_time(Timestamp when the request arrived. Is not nullable.)為2016-10-18 02:17:58.210,到現在2016-10-19 16:02:30.173已經有幾十個小時了,我kill會話的時間點為2016-10-19 12:00:01。
可以看到它的等待型別是OLEDB等待(圖一),也就是說等待連結伺服器所指的伺服器返回結果。另外這個事務的transaction_type為2,意味這只是一個Read-only transaction(避免別人誤解,這是一個證據),transaction_state為2,表示事務處於活動狀態(The transaction is active)。事務出現的這個時間點引起了我的注意,因為連結伺服器所指向的這臺伺服器出現當機(參考連結VmWare平臺Windows Server 2012 無響應當機),剛好是那臺伺服器虛擬機器出現當機時候,重啟的時間點前面一點(那臺伺服器凌晨1點多當機,2:22AM的時候重啟的)。從DPA監控工具也能看到確實是那個點出現的。如下所示:
這種分散式查詢,由於Linked Server所指的伺服器出現異常(例如當機),這邊的會話程式一直在等待其返回結果,但是Linked Server所指伺服器由於異常永遠都無法給這個會話程式反饋任何結果,就出現了這種情況,不過有點奇怪的是,這種情況無法通過KILL會話來結束。 只能通過重啟伺服器來解決問題, 也不能通過Kill程式解決(因為SQL Server是單程式多執行緒架構,不像ORACLE那種多程式架構,可以從作業系統層面殺掉程式或執行緒(Windows平臺,Oracle提供了一個工具ORAKILL utility 可以Kill執行緒)),但是重啟資料庫是一個很麻煩的事情。 所以這個殭屍會話就一直存在資料庫裡面,對於我這個有強迫症的人,看著它的存在,總想幹掉它. 確實是個折磨人的事情.
相關文章
- SESSION處於KILLED狀態下如何找出對應的程式Session
- 淺析前端狀態管理前端
- [20200319]KILL STATUS ='KILLED'的程式.txt
- CRM下載物件一直處於Wait狀態的原因物件AI
- 12、MySQL Case-show processlist 狀態一直處於Sending to clientMySqlclient
- MySQL kill會話不起作用?MySql會話
- MySQL的共享鎖阻塞會話案例淺析MySql會話
- SQLServer資料庫處於恢復掛起狀態的解決辦法SQLServer資料庫
- MySQL: kill 會話的實現原理MySql會話
- sqlserver kill long time lockSQLServer
- Jtti:SQLServer資料庫處於恢復掛起狀態的解決辦法JttiSQLServer資料庫
- OGG的replicat程式的Time Since Chkpt一直增加,程式處於假死狀態
- SQLServer如何監控阻塞會話SQLServer會話
- 實話實說:只會.NET,會讓我們一直處於鄙視鏈、食物鏈的下游
- Kubernetes怎麼處理一直在Terminating狀態的namespacenamespace
- JAVA動態繫結淺析Java
- 淺析DispatchProxy動態代理AOP
- 大話狀態協程
- Android巢狀滑動邏輯淺析Android巢狀
- 監控並處理一直不釋放資源的會話會話
- 在Oracle中,如何定時清理INACTIVE狀態的會話?Oracle會話
- MySQL的共享鎖阻塞會話案例淺析輸入日誌標題MySql會話
- 流式處理框架storm淺析(下篇)框架ORM
- 淺析MyBatis的動態代理原理MyBatis
- KVM虛擬機器處於暫停狀態怎麼處理虛擬機
- MogDB備機處於standby need-repair(WAL)狀態AI
- Hbase 之 某Region長期處於 RIT 狀態 ( 空洞 )
- 關於_rollback_segment_count
- 淺談前端的狀態管理,以及anguar的狀態管理庫前端
- 益普索:全球80%的女性處於隔離狀態
- [20180306]關於DEFERRED ROLLBACK.txt
- 對話 | 淺析NEO的dBFT共識演算法演算法
- Elasticsearch叢集狀態健康值處於red狀態問題分析與解決(圖文詳解)Elasticsearch
- 淺析靜態IP的用途和優點
- Android NDK祕籍--淺析靜態庫和動態庫Android
- CCAI 2020 | 塗威威:AI發展、監管處於動態博弈狀態AI
- 基於 Android Architecture Components 的 MVVM 淺析AndroidMVVM
- WCS:全球僅23%陸地處於近乎自然的荒野狀態