SQL Server數據庫故障&分析&恢復方案:
SQL Server數據庫的數據無法被讀取。
經過數據庫數據恢復工程師的初步檢測,發現SQL Server數據庫文件無法被讀取的原因是底層File Record被截斷為0,無法找到文件開頭,而且數據表結構也已經損壞。鏡像文件的前幾十M和中間一部分空間被覆蓋,系統表損壞,所以無法讀取。
日志中的操作記錄:
北亞企安數據恢復—SqlServer數據恢復
由于系統表損壞,大量數據表的結構無法確定,只能靠僅有線索和數據恢復工程師的技術&經驗來恢復數據庫數據。
經過北亞企安數據恢復工程師團隊的會診,最終敲定針對該數據庫的數據恢復方案:
1、備份數據。對丟失數據的硬盤做全盤鏡像備份,以確保數據的安全性。
2、分析備份文件中原數據庫,從原數據庫中尋找數據表的結構。
3、從日志中提取一部分數據表的結構。
4、從日志中和殘留數據中提取完好的數據。
5、根據日志恢復對應的數據,并檢查數據的正確性。
6、核對數據沒問題后恢復所有數據。
SQL Server數據庫數據恢復過程:
1、將故障數據庫所涉及到的硬盤標記后從服務器上取下,移交給硬件工程師檢測是否存在物理故障。經過檢測沒有發現有磁盤存在物理故障。將每塊硬盤以只讀方式做扇區級全盤鏡像。鏡像完成后將所有硬盤按照原樣還原到原服務器中。
備份硬盤數據:
北亞企安數據恢復—SqlServer數據恢復
2、打開鏡像文件,分析硬盤底層數據,發現硬盤底層殘留著許多SQL Server數據庫的日志和備份文件。經過查看和分析,發現日志中有很多包括插入語句的數據庫操作記錄;備份文件中有建表語句和一部分舊數據。
北亞企安數據恢復工程師編寫了一個提取數據庫相關數據的小程序,掃描所有存在的數據庫殘留并提取所有數據。
3、分析掃描到的所有日志文件,發現日志文件中的數據記錄有著固定的開頭和結尾,其中每條數據都在固定的位置上有自己的OBJECT_ID號,在接下來的掃描文件中,繼續搜尋有同樣OBJECT_ID的數據記錄,發現結構相同,就可以確定這是完好的數據,并進行提取。
分析掃描到的備份文件,發現很多建表語句,根據這些語句可以獲取到一部分表結構。針對剩余的表結構,由于截斷為0的部分剛好在系統表,沒有辦法提取表結構,只能通過從日志中提取的數據來推理表結構和數據類型。
4、根據前面的分析,北亞企安數據恢復工程師編寫程序從備份文件中提取建表語句,根據建表語句分析出表結構與各種數據類型。
5、在殘留的系統表中尋找22H、07H、05H表,根據這些建立表與OBJECT_ID的對應關系。北亞企安數據恢復工程師編寫程序提取日志中的記錄,根據OBJECT_ID將數據和表進行對應,并插入到新表中。
6、經過驗證,用戶方確認恢復出來的數據完整有效,認可數據恢復結果。
審核編輯 黃宇
-
數據恢復
+關注
關注
10文章
568瀏覽量
17432 -
數據庫
+關注
關注
7文章
3794瀏覽量
64362 -
SQLserver
+關注
關注
0文章
18瀏覽量
6999
發布評論請先 登錄
相關推薦
評論