熟知這幾步,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
- PG獲取檔案大小的幾種方式
- Linux檢視檔案大小的幾種方法Linux
- 學好這5個Excel技巧,工作效率翻倍不再是難題!Excel
- 資料庫資料恢復-SQL SERVER資料庫檔案大小變為“0”的資料恢復方案資料庫資料恢復SQLServer
- bat批處理徹底刪除0KB頑固檔案BAT
- python 將檔案大小轉換為human readable 的大小表示Python
- RAYSYNC馬上為您搞定大檔案傳輸難題
- 非IT企業的IT服務不再是難題
- [20181203]改變檔案大小與檢查點.txt
- 為什麼 Linux 預設頁大小是 4KBLinux
- 限制檔案大小及顯示檔案大小(正規表示式
- pdf檔案太大如何變小 減小pdf檔案大小最簡單的方法
- IIS 上傳檔案大小配置步驟(預設200K)
- 第十二講 為什麼表資料刪掉一半,表檔案大小不變?
- 明明已經刪除了資料,可是表檔案大小依然沒變
- Golang:go-humanize將檔案大小轉換成Kb、Mb、Gb適合人類閱讀的單位Golang
- git Windows下重新命名檔案,大小寫敏感問題GitWindows
- win10為什麼電腦檔案無法顯示大小_win10系統顯示檔案大小的方法Win10
- PbootCMS上傳檔案大小限制boot
- php檔案上傳大小限制PHP
- apache上傳檔案大小限制Apache
- 【BASIS】SAP On Mssql恢復步驟SQL
- 如何解決跨網檔案交換行為分散難管控等問題?
- 位它位識幾易則一率受戰ndf
- mssql sqlserver 判斷字串大小寫的方法分享SQLServer字串
- Go語言 | 你還在這樣獲取檔案的大小嗎?Go
- 滿足這幾點開通智慧數字化經營不是難題
- 【Addressable】Catalog檔案大小最佳化
- 生成固定大小的隨機檔案隨機
- JavaScript限制上傳檔案的大小JavaScript
- base64檔案大小計算
- linux 常用檢視埠,檔案大小Linux
- mssql sqlserver 使用指令碼輸出excel檔案的方法分享SQLServer指令碼Excel
- 只要這幾步,webpack速成不是事兒Web
- 小白也能玩轉開源專案,你與大神只差這幾步!