【巧用文件雕復方法】恢復刪除的數據庫文件
瀏覽量: 次 發布日期:2023-08-17 21:49:11
【巧用文件雕復方法】恢復刪除的數據庫文件
隨著計算機中數據存儲管理技術的飛速發展,越來越多的應用領域采用數據庫來存儲和處理信息資源。同時,數據庫文件又容易因誤操作或者惡意破壞而遭到刪除。因此,恢復被刪除的數據庫文件具有極高的實用價值。SQLServer數據庫文件被刪除后,其存儲于磁盤中的數據并不會被立刻抹除,但是文件系統中的元信息可能被刪除或者覆蓋,該情況下無法通過文件系統恢復刪除的數據文件。由于數據庫通常會存儲大量數據,數據文件相對較大,并且會隨著數據的不斷錄入而持續增長。這些因素導致數據文件在磁盤中存儲時會大量分片,通過文件頭特征的簽名恢復手段無法有效地恢復刪除文件。此時,本文中的文件雕復方法可有效地恢復刪除的數據文件。
一、關于sql server數據庫SQL Server是微軟推出的企業級關系型數據庫,具有高性能、高易用性、可伸縮性好、與相關軟件集成度高等優點,可方便快捷地構建高可用和高性能的數據應用程序,被廣泛應用于各種信息管理系統、辦公自動化系統、決策支持系統等。在最新的數據庫使用排名中,SQL Server以較大優勢排名第三,并且擁有較好的增長趨勢。
二、SQL Server數據庫的文件結構通過研究SQL Server數據庫的文件結構,我們發現文件數據被劃分為固定大小的片段,該片段稱為“頁”。頁的大小一般為8192個字節。頁也是SQL Server數據庫存儲數據的基本單元。文件結構如下圖所示:研究發現,每個頁的前0x60個字節都具有固定的結構,稱為“頁頭”,頁頭結構如下圖所示:上述頁頭結構中,每一項都具有特定的取值范圍,并且部分取值范圍極小,構成了區別于非SQL Server數據庫文件數據的獨特特征。特別地,頁頭中的m_pageId為頁ID,它是頁的邏輯編號,數據文件中的頁ID按照從0開始依次遞增的順序進行編號。
三、SQL Server數據庫文件碎片掃描根據前面所述,頁頭特征可有效區分數據片段是否為SQL Server數據庫文件的頁,為碎片掃描提供了理論依據。從頭至尾讀取磁盤數據,按扇區檢查數據。假定數據為SQL Server數據庫文件的頁,檢查頁頭結構中的每一項值是否在取值范圍內。若頁頭檢查通過,則認為從該位置開始的8192個字節數據為一個頁,并從該位置的8192個字節后繼續檢查數據;否則,繼續檢查下一個扇區的數據。通常情況下,會出現前后相接的多個頁。若它們的頁ID是連續遞增的,則認為它們屬于同一個數據文件,合并為一個文件碎片;否則,認為它們屬于不同數據文件,分散為多個文件碎片。掃描完磁盤后,將得到大量文件碎片,下一步則是對碎片進行重組,得到一個或者多個數據文件。
四、SQL Server數據庫文件碎片重組掃描完碎片后,會有兩種情況:
第一種情況
磁盤上僅有一個數據文件。該情況下碎片重組較為簡單,將所有碎片按照頁ID從小到大排列,組合為數據文件,完成恢復。
第二種情況
磁盤中存在多個數據文件,這也是實際應用中最為常見的情況。該情況下碎片重組較為復雜,難點主要在如何區分每個碎片屬于哪個文件,特別是在部分文件碎片被覆蓋而丟失的時候,非常容易出現重組錯誤。由于每個數據文件中的數據都有一定差異,經過大量深入的研究分析,已發現多個SQL Server數據特征的提取方法。經過驗證,可從多個維度去收集和轉換每個文件碎片的數據特征。在此基礎上,將特征相似且頁ID不存在沖突的文件碎片按照頁ID從小到大排列,組合為數據文件,完成恢復。該情況下會恢復出多個數據文件。本文介紹了一種恢復刪除的SQL Server數據庫文件的方法——文件雕復方法,該方法區別于傳統恢復手段,不依賴于文件系統,直接從磁盤數據中提取文件碎片,并將文件碎片重組為數據文件,在文件多分片情況下依然有效。
南京兆柏數據恢復中心 南京兆柏數據恢復中心