Sql-Server
在哪裡尋找有關 SQL Server 為何無響應/崩潰的線索?
最近,當我在對話中間(SSMS 事務日誌備份)時,一個 SQLExpress 實例突然變得無響應/崩潰,它被沙漏凍結並且對話框無法使用。網路上沒有其他應用程序或使用者能夠訪問實例。我嘗試使用服務重新啟動,但沒有響應。最終,我完全重新啟動了伺服器,它又恢復了。當時使用的所有數據庫似乎在重新啟動後仍在工作並且沒有損壞。
尋找這次崩潰根源的最佳地點在哪裡?
我查看了事件查看器 > 應用程序,但崩潰時唯一的消息是(按順序):
- 崩潰前我收到的最後一個對話框
- (約 1 分鐘停頓)
- SSMS 的 Windows 錯誤報告和應用程序掛起(我在伺服器本地使用)
- 來自 ASP.NET 的後續警告說它無法連接
- 幾個“重新驗證連接上的登錄時訪問伺服器驗證失敗。” 錯誤
- 幾個“客戶端無法重用 SPID 68 的會話,該會話已被重置用於連接池。失敗 ID 為 23。此錯誤可能是由較早的操作失敗引起的。在此之前檢查錯誤日誌以了解失敗的操作錯誤資訊。”
- 使用者 ‘xxxxxxxx’ 登錄失敗。此時只有管理員可以連接。$$ CLIENT: 127.0.0.1 $$
消息 5/6/7 似乎是伺服器無響應導致的,而不是原因。
我使用 SSMS > Management > SQL Server Logs 查看了 SQL 錯誤日誌,但這只是從上面的 1 跳到 5。
還有什麼我可以分析的嗎?
此時只有管理員可以連接。
聽起來 UI 已發出
ALTER DATABASE ... SET RESTRICTED_USER
然後掛起。這實際上並沒有掛起 SQL Server,它只是阻止了非管理員使用者連接。你可以通過使用你的應用程序來解決這個問題sa
——我在開玩笑。老實說,不要再使用 UI 進行日誌備份了——它在這樣的事情上並不是很擅長,而且很難選擇所有正確的選項來取得成功。
BACKUP LOG ... TO DISK
更加可靠、透明、無錯誤,甚至原始碼可控…