SQL Server數(shù)據(jù)庫故障:
存儲設(shè)備損壞導(dǎo)致存儲中SQL Server數(shù)據(jù)庫崩潰。對數(shù)據(jù)庫文件進行恢復(fù)后,用戶發(fā)現(xiàn)有4個ndf文件的大小變?yōu)?KB。該SQL Server數(shù)據(jù)庫每10天生成一個大小相同的NDF文件,該SQL Server數(shù)據(jù)庫包含兩個LDF文件。
SQL Server數(shù)據(jù)庫數(shù)據(jù)恢復(fù)過程:
1、將故障存儲中所有磁盤編號后取出,由硬件工程師檢測后沒有發(fā)現(xiàn)有硬盤存在硬件故障。以只讀方式將所有磁盤進行扇區(qū)級的全盤鏡像后,按照編號還原到原存儲中,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進行,避免對原始磁盤數(shù)據(jù)造成二次破壞。
2、北亞企安數(shù)據(jù)恢復(fù)工程師編寫數(shù)據(jù)庫掃描碎片程序掃描磁盤中數(shù)據(jù)庫碎片。根據(jù)NDF文件的頁面特征,按照文件號和頁號拼接碎片,重組生成這些0kb的NDF文件。
3、使用北亞企安自主開發(fā)的MSSQL文件檢測工具對所有數(shù)據(jù)文件進行檢測,結(jié)果發(fā)現(xiàn)通過拼接重組生成的4個NDF文件有少量的空頁,其他文件正常。
4、對損壞的lun做進一步分析,發(fā)現(xiàn)這些數(shù)據(jù)頁在存儲層面已經(jīng)不存在了,無法恢復(fù)這些數(shù)據(jù)頁,即這4個NDF文件無法完全恢復(fù)。
5、嘗試附加數(shù)據(jù)庫,報錯 “處理數(shù)據(jù)庫的日志時出錯,如果可能請從備份還原。如果沒有可用的備份,可能需要重新生成日志”。
6、修改系統(tǒng)表,從系統(tǒng)表剔除掉最后添加的LDF文件,計算并修改校驗。嘗試進行無日志附加數(shù)據(jù)庫,報錯:“數(shù)據(jù)庫存在一致性錯誤?!?br />
7、修改系統(tǒng)表中這4個損壞的NDF文件的塊數(shù)量,使其和恢復(fù)出來的文件的塊數(shù)量一致。修改系統(tǒng)表,將系統(tǒng)表記錄這4個NDF的塊數(shù)量的值改為和掃描出來的NDF文件塊數(shù)量一致,同時修改這4個NDF文件,使得數(shù)據(jù)庫中記錄的文件的塊數(shù)量和拼接出來的NDF的塊數(shù)量一致,計算并修改校驗值。
8、無日志附加數(shù)據(jù)庫,報錯“數(shù)據(jù)庫存在一致性錯誤。”
9、逐個修改系統(tǒng)表中這4個損壞的NDF文件的塊數(shù)量,使其值等于報錯塊的前一頁。由于空頁都出現(xiàn)在這4個NDF后面十幾個塊中,截斷文件對數(shù)據(jù)完整性影響不大。重新修改系統(tǒng)表和NDF文件,將數(shù)據(jù)庫中記錄NDF塊數(shù)量的值改至報錯的前一頁,計算并修改校驗。
10 、重新進行無日志附加數(shù)據(jù)庫,報錯“由于數(shù)據(jù)庫沒有完全關(guān)閉,無法重新生成日志。”
11、修改MDF文件中的數(shù)據(jù)庫的狀態(tài)值,讓數(shù)據(jù)庫認為是完全關(guān)閉的。重新附加數(shù)據(jù)庫,附加成功。
12、數(shù)據(jù)庫文件成功附加后,用戶方通過數(shù)據(jù)庫中的對象進行初步查詢、驗證,經(jīng)過檢測發(fā)現(xiàn)表中數(shù)據(jù)完整,認可數(shù)據(jù)恢復(fù)結(jié)果。
審核編輯 黃宇
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9596瀏覽量
86986 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
627瀏覽量
17946 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3884瀏覽量
65584
發(fā)布評論請先 登錄
相關(guān)推薦
分布式存儲數(shù)據(jù)恢復(fù)—虛擬機上hbase和hive數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動的數(shù)據(jù)恢復(fù)

虛擬化數(shù)據(jù)恢復(fù)—誤還原快照的數(shù)據(jù)恢復(fù)案例
SqlServer數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

oracle數(shù)據(jù)恢復(fù)—存儲掉盤導(dǎo)致Oracle數(shù)據(jù)庫文件大小變?yōu)?/b>0kb的數(shù)據(jù)恢復(fù)案例

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

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

oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫打開報錯的數(shù)據(jù)恢復(fù)案例

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

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

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

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

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

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

評論