熟知這幾步,MSSQL ndf檔案大小變為0 KB不再是難題
一、 MS SQL ndf檔案故障 描述
使用者某 儲存損壞 , 導致 資料 庫 崩潰。 透過 重組儲存 , 恢復資料庫 檔案,發現 有 四個ndf檔案大小變為 0 KB。資料庫 大小 約 80 TB。 資料庫 中有 1223個檔案,資料庫每10天 生成一個 NDF 檔案 ,每個NDF 大約 500 GB, 資料庫包含兩個LDF 檔案。
二、 MS SQL ndf檔案 故障分析
儲存損壞,NDF檔案大小變為0 KB, 經判斷 NDF檔案在磁碟上可能存在。可以透過編寫資料庫掃描碎片程式,掃描資料庫碎片、拼接碎片恢復NDF檔案,然後修復資料庫。
三、 MS SQL ndf檔案 恢復過程
1 磁碟掃描,掃描資料庫碎片
2 拼接碎片
根據NDF檔案的頁面特徵,按照檔案號,頁號拼接碎片,重組生成出這些0kb的NDF檔案。
3 檢測資料庫檔案
使用 北亞MSSQL檔案檢測工具 對所有資料檔案進行檢測,結果:拼接出的4個NDF檔案有少量的空頁,其他檔案正常。
4 進一步對損壞lun進行分析,發現這些資料頁在儲存層面已經不存存在了。不能恢復這些資料頁,即這4個檔案不能完全恢復
5嘗試附加資料庫,報錯 “處理資料庫的日誌時出錯,如果可能請從備份還原。如果沒有可用的備份,可能需要重新生成日誌”。
6、無日誌附加資料庫
修改系統表,從系統表剔除掉最後新增的LDF檔案,計算並修改校驗。進行無日誌附加資料庫。報錯:資料庫存在一致性錯誤, 如下 圖:
7 修改系統表中這4個損壞的NDF檔案的塊數量,使其和恢復出來的檔案的塊數量一致
修改系統表,將系統表記錄這4個NDF的塊數量的值改為和掃描出來的NDF檔案塊數量一致,同時更改這4個NDF檔案首頁,使得資料庫中記錄的檔案的塊數量和拼接出來的NDF的塊數量一致,計算並修改校驗值。
8 無日誌附加資料庫,報錯資料庫存在一致性錯誤,如下圖
9 逐個修改系統表中這4個損壞的NDF檔案的塊數量,使其值等於報錯塊前一頁
分析報錯,由於空頁都出現在這4個NDF後面十幾個塊中,截斷檔案對資料完整性影響不大。重新修改系統表和NDF檔案,將資料庫中記錄NDF塊數量的值改至報錯的前一頁,計算並修改校驗。
10 、重新進行無日誌附加資料庫,報錯“由於資料庫沒有完全關閉,無法重新生成日誌”
11、修改MDF檔案中的資料庫的狀態值,讓資料庫認為是完全關閉的
12、重新附加資料庫,附加成功
四、 MS SQL ndf檔案 資料恢復 結果
資料庫檔案成功附加後, 用 戶透過資料庫中的物件進行初步查詢、驗證,表中資訊基本完整,資料得到恢復。資料驗證完畢,客戶對恢復結果表示滿意。 至此資料恢復工作結束。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2669657/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MSSQL資料庫資料恢復案例:ndf檔案大小變為0KB恢復資料SQL資料庫資料恢復
- 上傳網站檔案至雲虛擬主機後提示檔案大小為0 KB網站
- 【maven】Maven打包後為何檔案大小改變了Maven
- 改變日誌檔案大小
- 改變歸檔日誌檔案大小
- SQL Server 檔案系統mdf, ndf, ldf ...SQLServer
- 學好這5個Excel技巧,工作效率翻倍不再是難題!Excel
- PG獲取檔案大小的幾種方式
- 非IT企業的IT服務不再是難題
- 資料庫資料恢復-SQL SERVER資料庫檔案大小變為“0”的資料恢復方案資料庫資料恢復SQLServer
- bat批處理徹底刪除0KB頑固檔案BAT
- RAYSYNC馬上為您搞定大檔案傳輸難題
- Linux檢視檔案大小的幾種方法Linux
- SQL Server 監視資料檔案大小變化SQLServer
- 為什麼 Linux 預設頁大小是 4KBLinux
- expdp在限定檔案大小時,注意dump檔名字變化【zt】
- 得到檔案大小
- python 將檔案大小轉換為human readable 的大小表示Python
- Linux 下最為人熟知的歸檔/壓縮工具Linux
- [原創] expdp在限定檔案大小時,注意dump檔名字變化
- php連線mssql測試檔案PHPSQL
- mssql 獲取表空間大小SQL
- pdf檔案太大如何變小 減小pdf檔案大小最簡單的方法
- 限制檔案大小及顯示檔案大小(正規表示式
- archive log檔案大小與redo log檔案大小關係探究Hive
- java 獲取資料夾大小、檔案大小、檔案個數Java
- 就這樣獲取檔案的MD5和大小
- 如何解決跨網檔案交換行為分散難管控等問題?
- IIS 上傳檔案大小配置步驟(預設200K)
- banq兄,各位高手java對檔案讀寫操作,檔案大小限制問題。Java
- 第十二講 為什麼表資料刪掉一半,表檔案大小不變?
- 滿足這幾點開通智慧數字化經營不是難題
- 修改上傳檔案大小
- 日誌檔案的大小
- 增大redo log檔案大小
- 簡單幾步把LOGO變字型Go
- 只要這幾步,webpack速成不是事兒Web
- Golang:go-humanize將檔案大小轉換成Kb、Mb、Gb適合人類閱讀的單位Golang