SQL Server數(shù)據(jù)庫故障&分析&恢復(fù)方案:
SQL Server數(shù)據(jù)庫的數(shù)據(jù)無法被讀取。
經(jīng)過數(shù)據(jù)庫數(shù)據(jù)恢復(fù)工程師的初步檢測,發(fā)現(xiàn)SQL Server數(shù)據(jù)庫文件無法被讀取的原因是底層File Record被截?cái)酁?,無法找到文件開頭,而且數(shù)據(jù)表結(jié)構(gòu)也已經(jīng)損壞。鏡像文件的前幾十M和中間一部分空間被覆蓋,系統(tǒng)表損壞,所以無法讀取。
日志中的操作記錄:

北亞企安數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)恢復(fù)
由于系統(tǒng)表損壞,大量數(shù)據(jù)表的結(jié)構(gòu)無法確定,只能靠僅有線索和數(shù)據(jù)恢復(fù)工程師的技術(shù)&經(jīng)驗(yàn)來恢復(fù)數(shù)據(jù)庫數(shù)據(jù)。
經(jīng)過北亞企安數(shù)據(jù)恢復(fù)工程師團(tuán)隊(duì)的會(huì)診,最終敲定針對(duì)該數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方案:
1、備份數(shù)據(jù)。對(duì)丟失數(shù)據(jù)的硬盤做全盤鏡像備份,以確保數(shù)據(jù)的安全性。
2、分析備份文件中原數(shù)據(jù)庫,從原數(shù)據(jù)庫中尋找數(shù)據(jù)表的結(jié)構(gòu)。
3、從日志中提取一部分?jǐn)?shù)據(jù)表的結(jié)構(gòu)。
4、從日志中和殘留數(shù)據(jù)中提取完好的數(shù)據(jù)。
5、根據(jù)日志恢復(fù)對(duì)應(yīng)的數(shù)據(jù),并檢查數(shù)據(jù)的正確性。
6、核對(duì)數(shù)據(jù)沒問題后恢復(fù)所有數(shù)據(jù)。
SQL Server數(shù)據(jù)庫數(shù)據(jù)恢復(fù)過程:
1、將故障數(shù)據(jù)庫所涉及到的硬盤標(biāo)記后從服務(wù)器上取下,移交給硬件工程師檢測是否存在物理故障。經(jīng)過檢測沒有發(fā)現(xiàn)有磁盤存在物理故障。將每塊硬盤以只讀方式做扇區(qū)級(jí)全盤鏡像。鏡像完成后將所有硬盤按照原樣還原到原服務(wù)器中。
備份硬盤數(shù)據(jù):

北亞企安數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)恢復(fù)
2、打開鏡像文件,分析硬盤底層數(shù)據(jù),發(fā)現(xiàn)硬盤底層殘留著許多SQL Server數(shù)據(jù)庫的日志和備份文件。經(jīng)過查看和分析,發(fā)現(xiàn)日志中有很多包括插入語句的數(shù)據(jù)庫操作記錄;備份文件中有建表語句和一部分舊數(shù)據(jù)。
北亞企安數(shù)據(jù)恢復(fù)工程師編寫了一個(gè)提取數(shù)據(jù)庫相關(guān)數(shù)據(jù)的小程序,掃描所有存在的數(shù)據(jù)庫殘留并提取所有數(shù)據(jù)。
3、分析掃描到的所有日志文件,發(fā)現(xiàn)日志文件中的數(shù)據(jù)記錄有著固定的開頭和結(jié)尾,其中每條數(shù)據(jù)都在固定的位置上有自己的OBJECT_ID號(hào),在接下來的掃描文件中,繼續(xù)搜尋有同樣OBJECT_ID的數(shù)據(jù)記錄,發(fā)現(xiàn)結(jié)構(gòu)相同,就可以確定這是完好的數(shù)據(jù),并進(jìn)行提取。
分析掃描到的備份文件,發(fā)現(xiàn)很多建表語句,根據(jù)這些語句可以獲取到一部分表結(jié)構(gòu)。針對(duì)剩余的表結(jié)構(gòu),由于截?cái)酁?的部分剛好在系統(tǒng)表,沒有辦法提取表結(jié)構(gòu),只能通過從日志中提取的數(shù)據(jù)來推理表結(jié)構(gòu)和數(shù)據(jù)類型。
4、根據(jù)前面的分析,北亞企安數(shù)據(jù)恢復(fù)工程師編寫程序從備份文件中提取建表語句,根據(jù)建表語句分析出表結(jié)構(gòu)與各種數(shù)據(jù)類型。
5、在殘留的系統(tǒng)表中尋找22H、07H、05H表,根據(jù)這些建立表與OBJECT_ID的對(duì)應(yīng)關(guān)系。北亞企安數(shù)據(jù)恢復(fù)工程師編寫程序提取日志中的記錄,根據(jù)OBJECT_ID將數(shù)據(jù)和表進(jìn)行對(duì)應(yīng),并插入到新表中。
6、經(jīng)過驗(yàn)證,用戶方確認(rèn)恢復(fù)出來的數(shù)據(jù)完整有效,認(rèn)可數(shù)據(jù)恢復(fù)結(jié)果。
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
712瀏覽量
18983 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
4019瀏覽量
68339 -
SQLserver
+關(guān)注
關(guān)注
0文章
21瀏覽量
7362
發(fā)布評(píng)論請(qǐng)先 登錄
MySQL數(shù)據(jù)庫備份恢復(fù)方式對(duì)比
Oracle數(shù)據(jù)庫ASM實(shí)例無法掛載的數(shù)據(jù)恢復(fù)案例
深度解讀MySQL數(shù)據(jù)庫備份恢復(fù)策略
mysql數(shù)據(jù)恢復(fù)—mysql數(shù)據(jù)庫表被truncate的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle數(shù)據(jù)庫故障的數(shù)據(jù)恢復(fù)案例
Oracle數(shù)據(jù)恢復(fù)—格式化分區(qū)導(dǎo)致Oracle數(shù)據(jù)庫報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫文件丟失的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?
oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)庫誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)數(shù)據(jù)?
SQLSERVER數(shù)據(jù)庫是什么
MySQL數(shù)據(jù)庫是什么
數(shù)據(jù)采集到MYSQL和SQLSERVER數(shù)據(jù)庫可以實(shí)現(xiàn)哪些功能
分布式存儲(chǔ)數(shù)據(jù)恢復(fù)—虛擬機(jī)上hbase和hive數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動(dòng)的數(shù)據(jù)恢復(fù)
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例
評(píng)論