Sql-Server
如何安全地終止長時間執行的 MSSQL 查詢?
最近我們有一個插入數據庫的 SQL 作業。該查詢已不必要地執行了幾天,因此使用 KILL SPID 將其殺死。然後這個過程開始回滾了幾天,似乎就掛在那裡了。
執行 KILL SPID WITH STATUSONLY 會給出一條消息,指出“預計完成”為 100%,“預計剩餘時間”為 0 秒。
最終我們不得不重新啟動刪除程序的 SQL 服務。
我的問題是——你應該如何殺死一個 SQL 程序?這是唯一的方法嗎?
你做的一切都是正確的,但你已經考慮了回滾的成本。您說您的查詢執行了好幾天,所以它會將幾天的數據作為未送出的事務寫入日誌文件。通過終止任務,您啟動了回滾,這是您必須等待的。
如果您希望能夠以較小的影響終止事務,請考慮對事務進行批處理並偶爾進行送出。如果您可以完全避免事務,那麼對於長時間執行的作業會更好。