Sql-Server

如何安全地終止長時間執行的 MSSQL 查詢?

  • January 27, 2017

最近我們有一個插入數據庫的 SQL 作業。該查詢已不必要地執行了幾天,因此使用 KILL SPID 將其殺死。然後這個過程開始回滾了幾天,似乎就掛在那裡了。

執行 KILL SPID WITH STATUSONLY 會給出一條消息,指出“預計完成”為 100%,“預計剩餘時間”為 0 秒。

最終我們不得不重新啟動刪除程序的 SQL 服務。

我的問題是——你應該如何殺死一個 SQL 程序?這是唯一的方法嗎?

你做的一切都是正確的,但你已經考慮了回滾的成本。您說您的查詢執行了好幾天,所以它會將幾天的數據作為未送出的事務寫入日誌文件。通過終止任務,您啟動了回滾,這是您必須等待的。

如果您希望能夠以較小的影響終止事務,請考慮對事務進行批處理並偶爾進行送出。如果您可以完全避免事務,那麼對於長時間執行的作業會更好。

引用自:https://serverfault.com/questions/26391