SqlServer資料庫資料恢復報告
1、資料庫故障概述
SQL server資料庫的資料無法被讀取。
2、故障分析
SQL server資料庫檔案無法被讀取,是由於底層File Record被截斷為0,無法找到檔案開頭,資料表結構也被損壞。映象檔案的前面80M左後的空間,還有中間一部分被覆蓋掉,導致系統表被損壞,所以無法讀取,考慮用自動備份檔案來提取表結構。
日誌中的操作記錄:
由於系統表被損壞,有大量資料表的結構無法被確定,只能靠工程師根據經驗進行恢復工作。
分析備份檔案中舊資料的資料庫。
從舊資料庫中尋找資料表的結構。
從日誌中提取一部分資料表的結構。
從日誌中和殘留資料中提取完好的資料。
根據日誌恢復對應的資料,並檢查資料是否正確。
核對資料沒問題後恢復所有資料。
由於資料全部都放在客戶的原盤中,先交給硬體部門檢測硬碟是否存在物理故障。經檢測沒問題後對每塊硬碟做全盤映象,使用專用工具將硬碟中所有扇區映象到一塊備份硬碟中。
4.2掃描映象檔案
用winhex開啟殘留檔案,仔細分析硬碟底層資料,發現硬碟底層中還殘留著許多以前SQL server的日誌和備份檔案。經過細心察看和分析,發現日誌中有資料庫很多包括插入語句的操作記錄,這些記錄可以考慮提取出來。還有備份檔案,開啟備份檔案可以發現有建表語句,還有一部分舊資料。
但由於整個硬碟太大,人工去搜尋SQL server相關資料部分會很慢,因此編寫一個提取資料庫相關資料的小程式,對整個硬碟中所有存在的資料庫殘留做掃描,提取所有資料。
4.3分析掃描資料
對掃描到的所有日誌檔案進行分析,發現日誌檔案中也分資料頁,有著固定的開頭和結尾,其中每條資料都在固定的位置有自己的object ID號,在接下來的掃描檔案中,繼續搜尋有同樣的object Id的資料記錄,發現結構相同,可以確定這是完好的資料,可以提取。
再對掃描到的備份檔案進行分析,發現可以從中提取出很多建表語句,可以得到一部分表結構。剩餘的表結構,由於截斷為0的部分剛好在系統表,沒有辦法提取表結構,只能從日誌中提取的資料來猜測表結構和資料型別。
4.4提取資料
根據之前分析的結論,先編寫程式從備份檔案中提取建表語句,根據建表語句分析出表結構與各種資料型別,同時在殘留的系統表中尋找22H、07H、05H表,根據這些建立表與OBJECT_ID的對應關係。然後編寫新的程式對日誌中的記錄進行提取(我是在這一步無法把numeric型別的位元組碼解析成資料,所以卡住了),根據object ID來對資料和表進行對應,並插入到新表中。
4.5驗證所有資料
經驗證,資料恢復出來的新表與人工觀察到的資料基本一致。
資料恢復成功。
SQL server資料庫的資料無法被讀取。
2、故障分析
SQL server資料庫檔案無法被讀取,是由於底層File Record被截斷為0,無法找到檔案開頭,資料表結構也被損壞。映象檔案的前面80M左後的空間,還有中間一部分被覆蓋掉,導致系統表被損壞,所以無法讀取,考慮用自動備份檔案來提取表結構。
日誌中的操作記錄:
由於系統表被損壞,有大量資料表的結構無法被確定,只能靠工程師根據經驗進行恢復工作。
3、解決方案
備份使用者資料,對丟失資料的硬碟。做全盤備份,以確保資料的安全性。分析備份檔案中舊資料的資料庫。
從舊資料庫中尋找資料表的結構。
從日誌中提取一部分資料表的結構。
從日誌中和殘留資料中提取完好的資料。
根據日誌恢復對應的資料,並檢查資料是否正確。
核對資料沒問題後恢復所有資料。
4、資料恢復實施過程
4.1備份使用者資料由於資料全部都放在客戶的原盤中,先交給硬體部門檢測硬碟是否存在物理故障。經檢測沒問題後對每塊硬碟做全盤映象,使用專用工具將硬碟中所有扇區映象到一塊備份硬碟中。
4.2掃描映象檔案
用winhex開啟殘留檔案,仔細分析硬碟底層資料,發現硬碟底層中還殘留著許多以前SQL server的日誌和備份檔案。經過細心察看和分析,發現日誌中有資料庫很多包括插入語句的操作記錄,這些記錄可以考慮提取出來。還有備份檔案,開啟備份檔案可以發現有建表語句,還有一部分舊資料。
但由於整個硬碟太大,人工去搜尋SQL server相關資料部分會很慢,因此編寫一個提取資料庫相關資料的小程式,對整個硬碟中所有存在的資料庫殘留做掃描,提取所有資料。
4.3分析掃描資料
對掃描到的所有日誌檔案進行分析,發現日誌檔案中也分資料頁,有著固定的開頭和結尾,其中每條資料都在固定的位置有自己的object ID號,在接下來的掃描檔案中,繼續搜尋有同樣的object Id的資料記錄,發現結構相同,可以確定這是完好的資料,可以提取。
再對掃描到的備份檔案進行分析,發現可以從中提取出很多建表語句,可以得到一部分表結構。剩餘的表結構,由於截斷為0的部分剛好在系統表,沒有辦法提取表結構,只能從日誌中提取的資料來猜測表結構和資料型別。
4.4提取資料
根據之前分析的結論,先編寫程式從備份檔案中提取建表語句,根據建表語句分析出表結構與各種資料型別,同時在殘留的系統表中尋找22H、07H、05H表,根據這些建立表與OBJECT_ID的對應關係。然後編寫新的程式對日誌中的記錄進行提取(我是在這一步無法把numeric型別的位元組碼解析成資料,所以卡住了),根據object ID來對資料和表進行對應,並插入到新表中。
4.5驗證所有資料
經驗證,資料恢復出來的新表與人工觀察到的資料基本一致。
資料恢復成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2153668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 資料庫資料恢復—SQLserver資料庫中勒索病毒被加密怎麼恢復資料?資料庫資料恢復SQLServer加密
- 【北亞資料恢復】sqlserver資料庫被加密的資料恢復案例分享資料恢復SQLServer資料庫加密
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- Mysql資料庫delete刪除後資料恢復報告MySql資料庫delete資料恢復
- 誤刪除儲存SqlServer資料庫資料恢復SQLServer資料庫資料恢復
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- (轉)sqlserver 資料恢復方法SQLServer資料恢復
- 【北亞資料恢復】vmfs還原快照操作導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- SQLSERVER完整資料庫還原(完整恢復模式)SQLServer資料庫模式
- 定時做資料庫恢復測試sqlserver資料庫SQLServer
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 資料庫修復資料恢復資料庫資料恢復
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】MS SQL資料庫附加資料庫出錯怎麼恢復資料?資料庫資料恢復SQL
- 恢復資料庫資料庫
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- 資料恢復記錄:硬碟分割槽損壞修復SqlServer資料庫過程資料恢復硬碟SQLServer資料庫
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle