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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

Frombyte ? 來(lái)源:Frombyte ? 作者:Frombyte ? 2023-06-20 14:50 ? 次閱讀

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

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

經(jīng)過(guò)初檢,發(fā)現(xiàn)SQL server數(shù)據(jù)庫(kù)文件無(wú)法被讀取的原因是因?yàn)榈讓覨ile Record被截?cái)酁?,無(wú)法找到文件開頭,數(shù)據(jù)表結(jié)構(gòu)損壞。鏡像文件的前面幾十M空間和中間一部分空間被覆蓋掉,系統(tǒng)表?yè)p壞,無(wú)法讀取??紤]用自動(dòng)備份文件來(lái)提取表結(jié)構(gòu)。

日志中的操作記錄:

pYYBAGSRTBOAJcT3AATg2PM85Ok126.png

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

由于系統(tǒng)表?yè)p壞,有大量數(shù)據(jù)表的結(jié)構(gòu)無(wú)法確定,只能依靠數(shù)據(jù)恢復(fù)工程師的技術(shù)和經(jīng)驗(yàn)嘗試進(jìn)行恢復(fù)。

經(jīng)過(guò)初檢的結(jié)果,北亞企安數(shù)據(jù)恢復(fù)工程師團(tuán)隊(duì)最終敲定數(shù)據(jù)恢復(fù)方案:

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

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

3、從舊SQL server數(shù)據(jù)庫(kù)中尋找數(shù)據(jù)表的結(jié)構(gòu)。

4、從日志中提取一部分?jǐn)?shù)據(jù)表的結(jié)構(gòu)。

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

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

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

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:

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

對(duì)硬盤做鏡像:

poYBAGSRTCSAE2z7AAMTkHxOwKw503.png

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

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

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

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

5、分析掃描到的備份文件,發(fā)現(xiàn)可以通過(guò)提取其中的建表語(yǔ)句來(lái)得到一部分的表結(jié)構(gòu)。對(duì)于剩余的表結(jié)構(gòu),因?yàn)榻財(cái)酁?的部分剛好在系統(tǒng)表,所以沒有辦法提取,只能根據(jù)從日志中提取出來(lái)的數(shù)據(jù)猜測(cè)表結(jié)構(gòu)和數(shù)據(jù)類型。

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

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

8、完成上述的所有操作后對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,經(jīng)過(guò)驗(yàn)證確認(rèn)恢復(fù)出來(lái)的新表與用工具觀察到的數(shù)據(jù)基本一致。本次數(shù)據(jù)恢復(fù)工作完成。

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    90

    瀏覽量

    23967
  • 數(shù)據(jù)恢復(fù)

    關(guān)注

    10

    文章

    528

    瀏覽量

    17318
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3739

    瀏覽量

    64176
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Oracle數(shù)據(jù)恢復(fù)—異常斷電后Oracle數(shù)據(jù)庫(kù)庫(kù)報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

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

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

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

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

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

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫(kù)底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例

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

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)SQL Server數(shù)據(jù)庫(kù)所在分區(qū)空間不足報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

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

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)數(shù)據(jù)庫(kù)所在分區(qū)空間不足導(dǎo)致sqlserver故障的數(shù)據(jù)恢復(fù)案例

    數(shù)據(jù)。服務(wù)器上部署sql server數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)存放在C盤。 數(shù)據(jù)庫(kù)故障: 工作人員
    的頭像 發(fā)表于 05-22 13:16 ?341次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—<b class='flag-5'>數(shù)據(jù)庫(kù)</b>所在分區(qū)空間不足導(dǎo)致sqlserver故障的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—raid5陣列上層Sql Server數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 5塊硬盤組建一組RAID5陣列,劃分LUN供windows系統(tǒng)服務(wù)器使用。windows系統(tǒng)服務(wù)器內(nèi)運(yùn)行了Sql Serve
    的頭像 發(fā)表于 05-08 11:43 ?434次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—raid5陣列上層<b class='flag-5'>Sql</b> <b class='flag-5'>Server</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—ndf文件大小變?yōu)?KB的數(shù)據(jù)恢復(fù)案例

    存儲(chǔ)設(shè)備損壞導(dǎo)致存儲(chǔ)中SQL Server數(shù)據(jù)庫(kù)崩潰。對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行恢復(fù)后,用戶發(fā)現(xiàn)有4個(gè)ndf文件的大小變?yōu)?KB。該
    的頭像 發(fā)表于 05-07 11:19 ?369次閱讀

    MongoDB數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)文件損壞的數(shù)據(jù)恢復(fù)案例

    服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)Windows Server操作系統(tǒng)服務(wù)器,服務(wù)器上部署MongoDB數(shù)據(jù)庫(kù)。 MongoDB數(shù)據(jù)庫(kù)故障&
    的頭像 發(fā)表于 04-23 14:48 ?350次閱讀
    MongoDB<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—MongoDB<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件損壞的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)Sql Server數(shù)據(jù)庫(kù)文件丟失的數(shù)據(jù)恢復(fù)案例

    服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)安裝windows server操作系統(tǒng)的服務(wù)器。一組由8塊硬盤組建的RAID5,劃分LUN供這臺(tái)服務(wù)器使用。 在windows服務(wù)器內(nèi)裝有SqlServer數(shù)據(jù)
    的頭像 發(fā)表于 04-11 15:38 ?764次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—<b class='flag-5'>Sql</b> <b class='flag-5'>Server</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件丟失的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)】Oracle數(shù)據(jù)庫(kù)ASM實(shí)例無(wú)法掛載的數(shù)據(jù)恢復(fù)案例

    oracle數(shù)據(jù)庫(kù)ASM磁盤組掉線,ASM實(shí)例不能掛載。數(shù)據(jù)庫(kù)管理員嘗試修復(fù)數(shù)據(jù)庫(kù),但是沒有成功。
    的頭像 發(fā)表于 02-01 17:39 ?422次閱讀
    【<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>】Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>ASM實(shí)例<b class='flag-5'>無(wú)法</b>掛載的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—未開啟binlog的Mysql數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 本地服務(wù)器,windows server操作系統(tǒng) ,部署有mysql單實(shí)例,數(shù)據(jù)庫(kù)引擎類型為innodb,
    的頭像 發(fā)表于 12-08 14:18 ?1008次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—未開啟binlog的Mysql<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    SQL Server數(shù)據(jù)庫(kù)備份方法

    SQL Server是一種用于管理和存儲(chǔ)數(shù)據(jù)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。備份數(shù)據(jù)庫(kù)是保護(hù)和恢復(fù)數(shù)據(jù)
    的頭像 發(fā)表于 11-23 14:27 ?1283次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MSSQL Server報(bào)錯(cuò)“附加數(shù)據(jù)庫(kù)錯(cuò)誤823”的數(shù)據(jù)恢復(fù)案例

    MSSQL Server數(shù)據(jù)庫(kù)比較常見的報(bào)錯(cuò)是“附加數(shù)據(jù)庫(kù)錯(cuò)誤823”。如果數(shù)據(jù)庫(kù)有備份,只需要還原備份即可;如果無(wú)備份或者備份不可用,則需要使用專業(yè)的
    的頭像 發(fā)表于 11-10 16:20 ?813次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—MSSQL <b class='flag-5'>Server</b>報(bào)錯(cuò)“附加<b class='flag-5'>數(shù)據(jù)庫(kù)</b>錯(cuò)誤823”的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MySQL數(shù)據(jù)庫(kù)表誤刪除記錄的數(shù)據(jù)恢復(fù)案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)本地windows sever操作系統(tǒng)服務(wù)器,服務(wù)器上部署mysql數(shù)據(jù)庫(kù)單實(shí)例,引擎類型為innodb,表內(nèi)數(shù)據(jù)
    的頭像 發(fā)表于 11-09 15:16 ?1215次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—MySQL<b class='flag-5'>數(shù)據(jù)庫(kù)</b>表誤刪除記錄的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例