Transaction-Log
SQL Server 2019 - 重啟後恢復(適用於 Windows 更新)
最近,我們的一個 SQL Server 2019 數據庫在重新啟動後一直處於“恢復中”。數據庫不是特別大。伺服器有 8 個數據庫,每個數據庫約 17GB。數據庫本身是一個 Azure 標準 DS12 v2(4 vcpus,28 GiB 記憶體)機器,對於我們的工作負載來說已經足夠了。
步驟:
- 進行完整備份
- 為我們的軟體版本執行遷移腳本
- 進行完整備份
- 執行 Windows 更新
- 機器重新啟動,(8 個中有 5 個)數據庫保持在“恢復中”
我們的數據庫非常標準。我們確實使用了通過 SQL 服務代理持續連接的 WebJob 來執行批處理任務。我們還有多個記憶體優化表。
雖然數據庫正在恢復中。SQL 伺服器實例似乎沒有做任何事情(活動監視器顯示沒有執行)。機器的 CPU 和磁碟使用率極低。SQL Server 日誌或事件查看器中沒有出現錯誤或警告。我們已經等待了 +24 小時,並且數據庫仍處於“恢復中”狀態。
我們目前有一個解決方法來刪除 Db 文件。並從發布後恢復完整備份。這不會導致我們數據失去。但它確實為我們的發布付出了很多額外的時間和精力。而且感覺很不穩定。
我們目前正在製定一個計劃來監控我們的日誌文件的內容。但我希望這裡的某個人可能對解決這個問題有一些其他的提示。
該行為是由我們數據庫中的 +400 記憶體優化表導致的性能下降引起的。我們通過改造我們的框架刪除了所有記憶體優化表,現在數據庫正在幾分鐘內恢復。
尚未發現記憶體優化表中究竟是什麼導致了問題。但由於資源限制,我們需要推遲進一步調查。