【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例

北亞資料恢復發表於2022-08-03

SqlServer資料庫故障&分析:

SQL server資料庫的資料無法被讀取。管理員聯絡我們資料恢復中心進行資料庫資料恢復。

資料庫資料恢復工程師對故障資料庫進行分析,發現SQL Server資料庫檔案無法被讀取的原因是由於底層File Record被截斷

為0,無法找到檔案開頭,資料表結構也被損壞。映象檔案前面80M左右的空間和中間一部

分空間被覆蓋掉,系統表損壞,無法讀取,考慮用自動備份檔案來提取表結構。

日誌中的操作記錄:

 

 

由於系統表被損壞,有大量資料表的結構無法被確定,只能靠資料庫資料恢復工程師根據經驗進行恢復工作。


資料庫資料恢復方案:

經過北亞資料庫資料恢復工程師團隊的會診,確定以下資料庫資料恢復方案:

備份使用者資料——分析備份檔案中舊資料的資料庫——從舊資料庫中尋找資料表的結構——從日誌中提取一部分資料表的結

構——從日誌中和殘留資料中提取完好的資料——根據日誌恢復對應的資料,並檢查資料是否正確

——核對資料沒問題後恢復所有資料。


SqlServer資料庫資料恢復過程:

1、備份資料。

硬體工程師首先檢測硬碟是否存在物理故障。沒有發現硬體問題後對每塊硬碟做映象備份。

使用專業工具備份所有硬碟資料:



2、掃描映象檔案。

用工具開啟殘留檔案並分析硬碟底層資料,發現硬碟底層中還殘留著許多SQL Server的日誌和備份檔案。殘留日誌中有很多

資料庫插入語句的操作記錄。殘留備份檔案中發現建表語句和部分舊資料,嘗試提取這些資料。

為了加快資料提取速度,北亞資料恢復工程師編寫了一個提取資料庫相關資料的小程式,掃描整個硬碟中所有的資料庫殘留

資料,提取所有資料。


3、分析掃描資料。

對掃描到的所有日誌檔案進行分析發現日誌檔案中分資料頁,有著固定的開頭和結尾,其中每條資料在固定的位置都有自己

的object ID號,在掃描檔案中繼續搜尋有同樣object Id的資料記錄,發現結構相同,可以確定這是完好的資料,可以提取。

再對掃描到的備份檔案進行分析發現從中可以提取出很多建表語句,獲取到一部分表結構。對於剩餘的表結構,由於截斷為

0的部分剛好在系統表,沒有辦法提取表結構,只能從日誌中提取的資料來推斷表結構和資料型別。


4、提取資料。

根據之前分析,北亞資料恢復工程師編寫程式從備份檔案中提取建表語句,根據建表語句分析出表結構與各種資料型別,同

時在殘留的系統表中尋找22H、07H、05H表。根據這些建立表與OBJECT_ID的對應關係編寫新的程式對日誌中的記錄進行

提取,根據object ID來對應資料和表,並插入到新表中。


5、驗證所有資料。

經管理員親自驗證,恢復出來的新表與使用專業工具觀察到的資料基本一致,本次資料恢復成功。


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

相關文章