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