譯者 | 李睿
審校 | 重樓
日志損壞問題通常發生在對事務日志進行備份的時候。其錯誤是這樣描述的:
“消息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