sql server數據庫附加錯誤 / 數據庫無法附加解決過程

故障描述
本案例中涉及一臺裝有SqlServer數據庫的某品牌r520型號的服務器存儲,這臺存儲中又包含有兩組磁盤陣列,raid級別都是raid5。正常情況下用戶的SqlServer數據庫存放在D盤中,後因爲數據量大導致D盤容量不足,管理員便在E盤中生成了一個.ndf的文件並且將數據庫路徑指向E盤繼續進行使用。但是大約半個月後數據庫突然出現故障報錯,連接失效,SqlServer數據庫無法附加查詢。管理員於是進行嘗試性數據恢復操作(管理員在原環境下進行了多次嘗試性恢復,導致了原始數據庫文件被重複的更改、覆蓋,磁盤空間複寫)爲後來的數據恢復工作增大了難度。

備份數據

按照數據恢復行業慣例,所有數據在進行數據恢復操作前必須對數據進行完整鏡像,使用dd命令或數據恢復工具將所有磁盤都鏡像成文件後對數據庫進行檢測和分析。

故障分析

數據庫報錯的原因經工程師初步推斷可能是由於D盤的存儲空間不足導致的邏輯錯誤。
工程師對存儲上的兩組raid5磁盤陣列進行分析重組,查看其中的數據並將raid總的數據庫文件備份出來進行嘗試性附加數據庫,但數據庫報錯。報錯內容爲“主數據庫文件和次級數據庫文件不匹配”

數據恢復

數據恢復工程師查看.ndf文件底層,但是在該文件中發現的數據量微乎其微,幾乎沒有任何數據,工程師將.mdf文件和.ndf文件之間的關聯關係取消,單獨使用.mdf文件進行附加數據庫依然有報錯,報錯內容爲“日誌文件(.ldf)和數據庫文件(.mdf)不匹配”。工程師繼續進行了數據庫的五數據庫附加操作,數據庫可以附加但系統表有損壞,數據庫依然無法正常使用。
工程師嘗試修復數據庫系統表但是沒有成功,數據表損壞嚴重,修復難度極大且效果難以保障,數據恢復工程師決定放棄修復數據錶轉而嘗試其他方法。
數據恢復工程師將數據恢復的突破口放在數據庫記錄上,通過自己編寫的一個小程序將數據庫記錄提取出來,再根據客戶以的數據庫備份數據獲取到該數據庫的表結構。重構數據庫表結構,然後將數據庫記錄導入新表。數據恢復成功

數據庫使用小提示

在數據庫使用過程中,要合理分配數據庫文件所在磁盤空間,及時清理垃圾數據,保證數據庫的正常、安全運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章