0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

【數(shù)據(jù)庫數(shù)據(jù)恢復】SQL Server數(shù)據(jù)庫無法讀取的數(shù)據(jù)恢復案例

Frombyte ? 來源:Frombyte ? 作者:Frombyte ? 2023-06-20 14:50 ? 次閱讀

數(shù)據(jù)庫故障&分析:

SQL server數(shù)據(jù)庫數(shù)據(jù)無法讀取。

經(jīng)過初檢,發(fā)現(xiàn)SQL server數(shù)據(jù)庫文件無法被讀取的原因是因為底層File Record被截斷為0,無法找到文件開頭,數(shù)據(jù)表結構損壞。鏡像文件的前面幾十M空間和中間一部分空間被覆蓋掉,系統(tǒng)表損壞,無法讀取。考慮用自動備份文件來提取表結構。

日志中的操作記錄:

pYYBAGSRTBOAJcT3AATg2PM85Ok126.png

北亞企安數(shù)據(jù)恢復——SQL Server數(shù)據(jù)恢復

由于系統(tǒng)表損壞,有大量數(shù)據(jù)表的結構無法確定,只能依靠數(shù)據(jù)恢復工程師的技術和經(jīng)驗嘗試進行恢復。

經(jīng)過初檢的結果,北亞企安數(shù)據(jù)恢復工程師團隊最終敲定數(shù)據(jù)恢復方案:

1、備份數(shù)據(jù)。

2、基于備份文件分析舊SQL server數(shù)據(jù)庫底層數(shù)據(jù)。

3、從舊SQL server數(shù)據(jù)庫中尋找數(shù)據(jù)表的結構。

4、從日志中提取一部分數(shù)據(jù)表的結構。

5、從日志和殘留數(shù)據(jù)中提取完好的數(shù)據(jù)。

6、根據(jù)日志恢復對應的數(shù)據(jù),檢查數(shù)據(jù)是否正確。

7、數(shù)據(jù)核對沒有問題后恢復出所有數(shù)據(jù)。

數(shù)據(jù)庫數(shù)據(jù)恢復過程:

1、將涉及到的所有硬盤交由硬件工程師進行物理故障檢測,經(jīng)過檢測沒有發(fā)現(xiàn)有硬盤存在物理故障。將每塊硬盤以只讀方式做全盤鏡像,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復工作都基于鏡像文件進行,避免對原始磁盤數(shù)據(jù)造成二次破壞。

對硬盤做鏡像:

poYBAGSRTCSAE2z7AAMTkHxOwKw503.png

北亞企安數(shù)據(jù)恢復——SQL Server數(shù)據(jù)恢復

2、基于鏡像文件分析硬盤底層數(shù)據(jù),發(fā)現(xiàn)底層殘留許多以前SQL server數(shù)據(jù)庫的日志和備份文件。經(jīng)過查看分析,發(fā)現(xiàn)日志中有很多包括插入語句的操作記錄。在備份文件中發(fā)現(xiàn)建表語句和一部分舊數(shù)據(jù)。

3、北亞企安數(shù)據(jù)恢復工程師編寫提取SQL server數(shù)據(jù)庫相關數(shù)據(jù)的小程序,掃描硬盤中所有存在的SQL server數(shù)據(jù)庫殘留數(shù)據(jù)并進行提取。

4、分析掃描到的所有日志文件,發(fā)現(xiàn)日志文件中的數(shù)據(jù)記錄都有固定的開頭和結尾,每條數(shù)據(jù)在固定的位置都有object ID號。在接下來的掃描中,繼續(xù)尋找有同樣object Id的數(shù)據(jù)記錄,發(fā)現(xiàn)這些數(shù)據(jù)記錄結構相同,由此可以判斷這是完好的數(shù)據(jù),可以提取。

5、分析掃描到的備份文件,發(fā)現(xiàn)可以通過提取其中的建表語句來得到一部分的表結構。對于剩余的表結構,因為截斷為0的部分剛好在系統(tǒng)表,所以沒有辦法提取,只能根據(jù)從日志中提取出來的數(shù)據(jù)猜測表結構和數(shù)據(jù)類型。

6、根據(jù)前面分析的結果,北亞企安數(shù)據(jù)恢復工程師編寫程序從備份文件中提取建表語句,根據(jù)建表語句分析表結構與各種數(shù)據(jù)的類型。在殘留的系統(tǒng)表中尋找22H、07H、05H表,根據(jù)這些建立表與OBJECT_ID的對應關系。

7、北亞企安數(shù)據(jù)恢復工程師編寫程序提取日志中的記錄,根據(jù)object ID來對應數(shù)據(jù)和表,并將數(shù)據(jù)插入到新表中。

8、完成上述的所有操作后對數(shù)據(jù)進行驗證,經(jīng)過驗證確認恢復出來的新表與用工具觀察到的數(shù)據(jù)基本一致。本次數(shù)據(jù)恢復工作完成。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    oracle數(shù)據(jù)恢復—oracle數(shù)據(jù)庫誤執(zhí)行錯誤truncate命令如何恢復數(shù)據(jù)?

    oracle數(shù)據(jù)庫誤執(zhí)行truncate命令導致數(shù)據(jù)丟失是一種常見情況。通常情況下,oracle數(shù)據(jù)庫誤操作刪除數(shù)據(jù)只需要通過備份恢復數(shù)據(jù)
    的頭像 發(fā)表于 06-05 16:01 ?225次閱讀
    oracle<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—oracle<b class='flag-5'>數(shù)據(jù)庫</b>誤執(zhí)行錯誤truncate命令如何<b class='flag-5'>恢復數(shù)據(jù)</b>?

    數(shù)據(jù)庫數(shù)據(jù)恢復——MongoDB數(shù)據(jù)庫文件拷貝后服務無法啟動的數(shù)據(jù)恢復

    MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復環(huán)境: 一臺Windows Server操作系統(tǒng)虛擬機上部署MongoDB數(shù)據(jù)庫。 MongoDB
    的頭像 發(fā)表于 04-09 11:34 ?252次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>——MongoDB<b class='flag-5'>數(shù)據(jù)庫</b>文件拷貝后服務<b class='flag-5'>無法</b>啟動的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>

    數(shù)據(jù)庫數(shù)據(jù)恢復SQL Server附加數(shù)據(jù)庫提示“錯誤 823”的數(shù)據(jù)恢復案例

    SQL Server數(shù)據(jù)庫附加數(shù)據(jù)庫過程中比較常見的報錯是“錯誤 823”,附加數(shù)據(jù)庫失敗。 如果數(shù)據(jù)
    的頭像 發(fā)表于 02-28 11:38 ?427次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—<b class='flag-5'>SQL</b> <b class='flag-5'>Server</b>附加<b class='flag-5'>數(shù)據(jù)庫</b>提示“錯誤 823”的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    Devart: dbForge Compare Bundle for SQL Server—比較SQL數(shù)據(jù)庫最簡單、最準確的方法

    ? dbForge Compare Bundle For SQL Server:包含兩個工具,可幫助您節(jié)省用于手動數(shù)據(jù)庫比較的 70% 的時間 dbForge數(shù)據(jù)比較 幫助檢測和分析實
    的頭像 發(fā)表于 01-17 11:35 ?499次閱讀

    SqlServer數(shù)據(jù)恢復—SqlServer數(shù)據(jù)庫數(shù)據(jù)恢復案例

    一塊硬盤上存放的SqlServer數(shù)據(jù)庫,windows server操作系統(tǒng)+NTFS文件系統(tǒng)。由于誤操作導致分區(qū)損壞,需要恢復硬盤里的SqlServer數(shù)據(jù)庫
    的頭像 發(fā)表于 01-09 11:15 ?388次閱讀
    SqlServer<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—SqlServer<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復—Mysql數(shù)據(jù)庫表記錄丟失的數(shù)據(jù)恢復流程

    Mysql數(shù)據(jù)庫故障: Mysql數(shù)據(jù)庫表記錄丟失。 Mysql數(shù)據(jù)庫故障表現(xiàn): 1、Mysql數(shù)據(jù)庫表中無任何數(shù)據(jù)或只有部分
    的頭像 發(fā)表于 12-16 11:05 ?555次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—Mysql<b class='flag-5'>數(shù)據(jù)庫</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>流程

    數(shù)據(jù)庫數(shù)據(jù)恢復—MYSQL數(shù)據(jù)庫ibdata1文件損壞的數(shù)據(jù)恢復案例

    mysql數(shù)據(jù)庫故障: mysql數(shù)據(jù)庫文件ibdata1、MYI、MYD損壞。 故障表現(xiàn):1、數(shù)據(jù)庫無法進行查詢等操作;2、使用mysqlcheck和myisamchk
    的頭像 發(fā)表于 12-09 11:05 ?562次閱讀

    Sybase數(shù)據(jù)恢復—Sybase數(shù)據(jù)庫無法啟動怎么恢復數(shù)據(jù)

    數(shù)據(jù)庫數(shù)據(jù)恢復工程師經(jīng)過檢測,發(fā)現(xiàn)Sybase數(shù)據(jù)庫出現(xiàn)故障的原因是:異常斷電造成Sybase數(shù)據(jù)庫無法
    的頭像 發(fā)表于 11-30 16:45 ?405次閱讀
    Sybase<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—Sybase<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>無法</b>啟動怎么<b class='flag-5'>恢復數(shù)據(jù)</b>?

    數(shù)據(jù)庫數(shù)據(jù)恢復—通過拼接數(shù)據(jù)庫碎片恢復SQLserver數(shù)據(jù)庫

    試圖恢復數(shù)據(jù)庫,發(fā)現(xiàn)有數(shù)個ndf文件大小變?yōu)?KB。 雖然NDF文件大小變?yōu)?KB,但是NDF文件在磁盤上還可能存在??梢試L試通過掃描&拼接數(shù)據(jù)庫碎片來恢復NDF文件,然后修復數(shù)據(jù)庫
    的頭像 發(fā)表于 10-31 13:21 ?641次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—通過拼接<b class='flag-5'>數(shù)據(jù)庫</b>碎片<b class='flag-5'>恢復</b>SQLserver<b class='flag-5'>數(shù)據(jù)庫</b>

    數(shù)據(jù)庫數(shù)據(jù)恢復—Oracle ASM實例無法掛載的數(shù)據(jù)恢復案例

    方案: 數(shù)據(jù)庫數(shù)據(jù)恢復工程師對組成ASM磁盤組的磁盤進行分析。對ASM元數(shù)據(jù)進行分析發(fā)現(xiàn)ASM存儲元數(shù)據(jù)損壞,導致磁盤組
    的頭像 發(fā)表于 10-28 11:26 ?419次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—Oracle ASM實例<b class='flag-5'>無法</b>掛載的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    Oracle數(shù)據(jù)恢復—異常斷電后Oracle數(shù)據(jù)庫報錯的數(shù)據(jù)恢復案例

    Oracle數(shù)據(jù)庫故障: 機房異常斷電后,Oracle數(shù)據(jù)庫報錯:“system01.dbf需要更多的恢復來保持一致性,數(shù)據(jù)庫
    的頭像 發(fā)表于 09-30 13:31 ?678次閱讀
    Oracle<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—異常斷電后Oracle<b class='flag-5'>數(shù)據(jù)庫</b>啟<b class='flag-5'>庫</b>報錯的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復—Oracle數(shù)據(jù)庫文件system01.dbf損壞的數(shù)據(jù)恢復案例

    打開oracle數(shù)據(jù)庫報錯“system01.dbf需要更多的恢復來保持一致性,數(shù)據(jù)庫無法打開”。
    的頭像 發(fā)表于 09-21 14:25 ?920次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—Oracle<b class='flag-5'>數(shù)據(jù)庫</b>文件system01.dbf損壞的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復SQL Server數(shù)據(jù)庫出現(xiàn)823錯誤的數(shù)據(jù)恢復案例

    SQL Server數(shù)據(jù)庫故障: SQL Server附加數(shù)據(jù)庫出現(xiàn)錯誤823,附加
    的頭像 發(fā)表于 09-20 11:46 ?660次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—<b class='flag-5'>SQL</b> <b class='flag-5'>Server</b><b class='flag-5'>數(shù)據(jù)庫</b>出現(xiàn)823錯誤的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復—SqlServer數(shù)據(jù)庫底層File Record被截斷為0的數(shù)據(jù)恢復案例

    SQL Server數(shù)據(jù)庫數(shù)據(jù)無法讀取。 經(jīng)過數(shù)據(jù)庫
    的頭像 發(fā)表于 07-26 11:27 ?695次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>—SqlServer<b class='flag-5'>數(shù)據(jù)庫</b>底層File Record被截斷為0的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復SQL Server數(shù)據(jù)庫所在分區(qū)空間不足報錯的數(shù)據(jù)恢復案例

    Server數(shù)據(jù)庫故障: 存放SQL Server數(shù)據(jù)庫的D盤分區(qū)容量不足,管理員在E盤中生成了一個.ndf的文件并且將
    的頭像 發(fā)表于 07-10 13:54 ?890次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品