SQL Server 關於kill state


產品數據庫的環境是: Microsoft SQL Server 2017(14.x),有一個ETL運行失敗,從系統中查看到錯誤消息是:

Cannot continue the execution because the session is in the kill state.

從錯誤消息中推測,應該是有人執行kill命令主動結束了一個session。SQL Server的錯誤日志(error log)中應該包含 kill session的詳細信息,可以通過執行以下命令得到執行kill命令的主機名稱和進程ID:

EXEC xp_readerrorlog 0, 1, N'kill', NULL, NULL, NULL, N'DESC'

但是,出現這種錯誤,有可能不是執行kill命令,因此,從errorlog中並不會得到任何關於kill的信息,有可能是數據庫的表結構或索引結構出現崩潰(corruption )導致的。

如果是聚集的索引結構出現崩潰,在創建非聚集索引的時候,就可能發生該錯誤,這需要執行DBCC CHECKDB 命令來檢查數據庫的完整性:

DBCC CHECKDB (database_name)
DBCC CHECKCATALOG (database_name)

 

而修復錯誤,通常需要執行以下幾個命令:

DBCC CHECKDB (database_name, REPAIR_FAST) -- quick fix
DBCC CHECKDB (database_name, REPAIR_REBUILD) -- reset index
DBCC CHECKDB (database_name, REPAIR_ALLOW_DATA_LOSS) -- Allows correction of missing data
DBCC CHECKALLOC (database_name, REPAIR_REBUILD) -- Fixed allocation problem
DBCC DBREINDEX (database_name, REPAIR_REBUILD) -- fix index problem

 

 

參考文檔:

 


免責聲明!

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



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