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