譯者 | 李睿
日誌損壞問題通常發生在對事務日誌進行備份的時候。其錯誤是這樣描述的:
「消息26019,級別16,狀態1,第1行BACKUP在資料庫日誌中檢測到損壞。有關詳細信息,請查看錯誤日誌。BACKUP LOG異常終止。」
本文中將解釋發生這個錯誤的原因以及如何解決這個問題。
資料庫日誌錯誤損壞意味著什麼?
級別16的錯誤並不那麼嚴重,這是在雜項用戶錯誤的類別。資料庫將會正常工作。如果進行一個完整的備份,它將會工作。如果運行DBCC CHECKDB,它將不會檢測到錯誤。
但是,事務日誌文件被損壞,第1行則是失敗的代碼行。
為什麼會出現這個錯誤?
要找出這個錯誤的原因,需要檢查SQL錯誤日誌。
可以在SQL Server管理工作室(SSMS)中找到錯誤日誌。
在「對象資源管理器」中選擇「管理>SQL Server日誌」,可以看到當前日誌和之前的日誌。雙擊日誌,就可以看到事件和錯誤。
也可以檢查事件查看器,進入Windows日誌>應用程式,尋找MSSQL Server錯誤。
可能導致日誌損壞的最常見問題是硬體問題。此外,一些軟體也可能會損壞資料庫。
例如,在執行事務時遇到電源故障可能會關閉伺服器,然後日誌可能會損壞。另一個常見的問題是磁碟故障。如果磁碟老舊,或者遭遇停電,或者有供電問題,就會發生這種情況。如果伺服器溫度過高,可能會出現硬體問題。
一些軟體可以破壞日誌,例如病毒和惡意軟體可能會破壞日誌文件。
如何解決在SQL Server資料庫備份過程中檢測到的日誌損壞
如果對損壞的資料庫進行完整備份,則備份將運行,但將使用損壞的日誌文件備份資料庫。
如果嘗試只備份日誌文件,將得到以上提到的錯誤。
該問題的解決方案是使用「出錯時繼續」(Continue on Error)選項進行備份。
要執行此操作,需要打開SSMS。
在「對象資源管理器」中右鍵單擊「資料庫」,選擇「任務>備份」。
選擇「事務日誌」選項。
在「媒體選項」中,選擇「在錯誤時繼續」選項。
即使事務日誌已損壞,這一選項也將繼續執行備份。
解決這個問題的另一種方法是將資料庫設置為「簡單恢復」模式。
在SSMS中,進入對象資源管理器。
單擊「資料庫」,右鍵單擊該資料庫,然後選擇「屬性」。
進入「選項」頁面,選擇「簡單恢復」模式。
使用T-SQL運行檢查點(checkpoint)。
複製
CHECKPOINT
對資料庫進行完整備份。
現在能夠對日誌文件進行備份,而不會出現錯誤。
如何使用Stellar Repair for MS SQL解決SQL Server資料庫備份過程中檢測到的日誌損壞問題
解決這個問題的另一種方法是使用Stellar Repair for MS SQL。這個軟體可以使用SQL Server數據文件修復資料庫,也可以使用損壞的SQL Server備份來恢復所有信息。一旦資料庫恢復,就可以備份日誌文件而不會出現錯誤。
要做到這一點,用戶需要從其網站連結下載軟體。
先將資料庫聯機。執行以下命令:
複製
ALTER DATABASE stellardb
SET OFFLINE;
需要找到數據文件,數據文件是擴展名為.mdf的文件。該文件包含資料庫信息。
如果知道mdf文件在哪裡,可以瀏覽並選擇它,然後按下「修復」按鈕。
在修復之後,可以將數據保存在新資料庫(New Database)中。實時資料庫(Live Database)將取代當前資料庫。當選擇其他格式時,可以導出Excel、CSV或HTML文件中的表格和視圖數據。
如果選擇新資料庫或實時資料庫,則可以備份日誌文件而不會出現錯誤,因為修復後的資料庫不會損壞。
結論
本文介紹了在日誌損壞時將會發生什麼錯誤,還了解了發生這一錯誤的原因。此外,還介紹了使用「出錯時繼續」選項如何進行備份。最後,學習了如何使用Stellar repair for MS SQL修復資料庫。
原文標題:Resolving Log Corruption Detected During Database Backup in SQL Server,作者:Daniel Calbimonte