您好,登錄后才能下訂單哦!
這篇文章給大家介紹SqlServer數據庫數據恢復報告是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
1、數據庫故障概述
SQL server數據庫的數據無法被讀取。
2、故障分析
SQL server數據庫文件無法被讀取,是由于底層File Record被截斷為0,無法找到文件開頭,數據表結構也被損壞。鏡像文件的前面80M左后的空間,還有中間一部分被覆蓋掉,導致系統表被損壞,所以無法讀取,考慮用自動備份文件來提取表結構。
日志中的操作記錄:
由于系統表被損壞,有大量數據表的結構無法被確定,只能靠工程師根據經驗進行恢復工作。
備份用戶數據,對丟失數據的硬盤。做全盤備份,以確保數據的安全性。
分析備份文件中舊數據的數據庫。
從舊數據庫中尋找數據表的結構。
從日志中提取一部分數據表的結構。
從日志中和殘留數據中提取完好的數據。
根據日志恢復對應的數據,并檢查數據是否正確。
核對數據沒問題后恢復所有數據。
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驗證所有數據
經驗證,數據恢復出來的新表與人工觀察到的數據基本一致。
數據恢復成功。
關于SqlServer數據庫數據恢復報告是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。