Sql Server資料庫檔案丟失的恢復方法

北亞資料恢復發表於2018-10-11

故障描述:

5塊2T硬碟組建RAID5,劃分LUN供windows伺服器使用。在windows伺服器內裝有Sql Server2008資料庫。儲存空間內共有三個邏輯分割槽,大小分別為500G、800G、2.3T。資料庫檔案丟失,主要涉及五個資料庫,表個數約為6000個左右。丟失原因未知,且不能確定資料儲存位置。三個資料庫的大小分別為8G、15G、20G。在檔案丟失後伺服器仍處於開機狀態,但並未寫入大量資料。

初檢流程:

1、使用RAID資訊及內部資料塊資訊重組RAID。

重組RAID

2、提取LUN內三個分割槽映象。

3、掃描檔案系統內丟失檔案,未找到被刪除資料庫檔案。

4、初檢結果為資料庫檔案丟失,透過檔案系統角度無法恢復。

恢復流程:

1、制定恢復方案。在資料庫檔案被刪除且判定為無法恢復檔案後,只能透過掃描資料頁,並提取頁內記錄的方式進行恢復。

2、使用北亞自主編資料頁掃描程式掃描分割槽內資料頁並提取。在分別掃描兩個分割槽映象後發現500G系統盤內資料頁數量極少且資料頁斷裂情況嚴重,另一分割槽內掃描到資料頁個數較多。暫定此分割槽為資料庫檔案儲存空間。

掃描資料頁

3、重組系統表。Sql Server資料庫使用系統表來管理所有使用者表,在這些系統表內記錄了各表的列數、資料型別及約束資訊等。解析系統表過程中發現提取出的資料頁內系統表損壞,無法正常讀取資訊。在與客戶溝通後得知有備份檔案,且備份完成後沒有大量改動表結構,系統表可用。

4、還原備份。

還原備份

5、分別提取三個庫中各表表結構資訊

提取表結構資訊

6、解析表結構指令碼。將各表的列資訊存入資料庫內便於後續使用。

掃描指令碼檔案

表結構資訊存入資料庫

7、解析系統表獲取使用者表id資訊、關聯表結構與資料頁。(為保護客戶隱私,後續步驟涉及使用者表表名及資料頁內資料部分均未截圖)

8、新建資料庫,使用北亞自主編寫軟體解析記錄並匯入到恢復環境內。

9、整理恢復結果。在此分割槽內除資料庫檔案外還存有備份檔案若干,所以在匯出記錄後可能存在重複資料,必須去重。編寫SQL儲存過程進行去重。


資料庫去重

  10、客戶驗證資料。客戶在查驗過資料後表示資料可以接受,移交資料到客戶儲存裝置,恢復成功。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2216075/,如需轉載,請註明出處,否則將追究法律責任。

相關文章