Sql-Server-2012

如何終止等待 IO_COMPLETION 的掛起 SQL Server 事務?

  • May 13, 2020

我們有一個已執行超過 5 小時的事務。我們的磁碟空間不足。會話已被終止,但仍在等待 IO_COMPLETION。實際上,wait_type 只是更改為 PAGEIOLATCH_EX。如何終止暫停的 SQL Server 事務?我不擔心失去數據,因為所有數據都可以重新填充。

session_id: 54
STATUS: suspended
blocked by: 0
wait_type: PAGEIOLATCH_EX
Elapsed Time (in Sec): 19750.420000
open_transaction_count: 2

下次發生這種情況時,執行sp_WhoIsActive下載/文件)並查看誰在執行什麼並查看邏輯。檢查是否可以優化 TSQL 以更快地執行,或者將其拆分為更小的事務。

我遇到過這樣的情況,報告編寫者、數據載入器等的錯誤查詢的事務日誌會使事務日誌的大小超過數據文件的大小,並且通常是性能不佳、編寫不佳且未優化或分塊的查詢事務完成後,將其分成較小的事務以歸還可用空間-順便說一句,這也是在SIMPLE恢復模型數據庫上-FULL恢復模型數據庫需要完成事務日誌備份才能重用已送出事務的事務日誌空間。

根本問題可能是查詢,因此確定誰在做什麼並與他們聯繫並用您的發現報告問題會給他們施加壓力,以修復他們的邏輯,以不為該磁碟分區佔用伺服器磁碟空間 - 希望是不是您的邏輯,但如果是,請查看優化邏輯以查詢調整性能。

引用自:https://dba.stackexchange.com/questions/103173