sqlserver遇到回滾事務的操作策略

lusklusklusk發表於2019-11-18

參考https://blog.sqlauthority.com/2015/08/31/sql-server-spid-is-killedrollback-state-what-to-do-next/


select * from sys.sysprocesses where cmd='KILLED/ROLLBACK'可以查到回滾的資訊


有時我們會使用“KILL”命令來結束處於掛起狀態的程式。一旦發生這種情況,如果SQL知道如何回滾該工作,它將啟動“真正的”回滾過程,並撤消所做的工作。有些情況下,SQL不知道並且無法控制已完成的工作,也無法回滾工作,在這些情況下,它將永遠處於終止/回滾狀態。


你如何決定採取什麼行動?這完全取決於被殺死的SPID所採取的行動。你只能做幾件事:
1、耐心等待回滾完成。一些大型操作可能需要很長時間才能回滾。這樣的SPID在sys.sysprocesses會顯示CPU、記憶體和IO列大小的變化。
2、如果SPID在CPU、記憶體和IO列中沒有顯示任何變化,那麼它什麼也不做,找到spid來自哪臺客戶端機器,進入這臺客戶端機器,在工作管理員裡面結束這個程式。
3、如果這個客戶端程式在客戶端機器已經殺死了,但是資料庫伺服器還是顯示這個程式資訊,並且不執行任何操作,則只能重新啟動SQL服務

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2664573/,如需轉載,請註明出處,否則將追究法律責任。

相關文章