1.了解MDF檔案損壞
MDF 檔案是 SQL Server的資料儲存機制。這些關鍵組件在損壞時需要快速檢測並採用適當的復原方法,以最大限度地減少資料遺失。讓我們了解 MDF 檔案以及如何修復損壞的 MDF 檔案。
1.1 MDF 文件是什麼 SQL Server?
MDF(主資料庫檔案)是 SQL Server 保存所有使用者數據,例如表格、索引、預存程序、視圖和其他資料庫物件。該文件既有架構,又有實際數據,這使得它成為 most 任何重要部分 SQL Server 資料庫. .mdf 副檔名標識與日誌檔案 (.ldf) 一起使用的主檔案。這些日誌檔案追蹤復原操作所需的交易資訊。
1.2 MDF檔案損壞的常見原因
您的 MDF 檔案可能會因以下幾個原因而損壞:
- 斷電或不當 SQL Server 關閉
- 硬體故障,特別是儲存子系統問題
- 儲存磁碟機上的壞磁區
- 惡意軟體或病毒攻擊未受保護的系統
- 影響資料庫儲存的檔案系統錯誤
- 軟體錯誤 SQL Server 本身
活動資料庫操作期間的系統崩潰會大大增加損壞的風險,因為它們會停止重要的寫入操作。
1.3 防止 MDF 檔案損壞的有用提示
以下是保護 MDF 檔案免受損壞的方法:
- 建立定期備份並自動檢查其完整性
- 使用 CHECKSUM 作為所有資料庫的頁面驗證選項
- 使用 CHECKSUM 執行 BACKUP DATABASE 命令
- 使用 UPS 以避免突然關機
- 經常檢查磁碟空間以防止儲存問題
- 更新狀態 SQL Server 以及帶有安全補丁的作業系統
- 定期在所有資料庫上執行 DBCC CHECKDB
1.4 MDF 文件損壞的常見跡象
快速偵測 MDF 檔案損壞可以為您節省大量恢復時間。以下是 MDF 檔案損壞的一些常見跡象:
- 嘗試附加或存取資料庫時出現的錯誤訊息
- 資料庫顯示為 SUSPECT 或 RECOVERY_PENDING 模式
- I/O 錯誤 SQL Server 日誌,特別是錯誤 823、824 或 825
- GAM/SGAM/IAM/PFS 頁面上的指派錯誤。
- 資料庫操作期間的一致性錯誤
- 突然出現效能問題
以下是 MDF 檔案損壞時的一些常見錯誤訊息:
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc) xxx.mdf is not a primary database file. (Microsoft SQL Server, Error: 5171)
Attach database failed for Server ‘xxx’. (Microsoft.SqlServer.Smo) The header for file ‘xxx.mdf’ is not a valid database file header. The FILE SIZE property is incorrect.(Micosoft SQL Server, Error:5172)
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0x2abc3894; actual: 0x2ebe208e). It occurred during a read of page (1:1) in database ID 12 at offset 0x00000000002000 in file ‘xxx.mdf’. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.(Microsoft SQL Server, Error:824)
SQL Server detected a logical consistency-based I/O error: torn page (expected signature: 0x########; actual signature: 0x#######).
2. 修復MDF檔案的免費手動方法
SQL Server的原生方法提供了免費的MDF檔案損壞修復方法。這些手動方法可以挽救您無法存取的資料庫,但需要謹慎操作。
2.1 從最近的備份中恢復
併購ost 可靠的恢復方法tar從最近的備份中復原。這種方法透過恢復健康狀態來避免腐敗。您可以使用具有適當 FROM DISK 參數的 RESTORE DATABASE 命令將資料庫還原到損壞之前的狀態。您的資料完整性保持不變,並且不會損害資料庫物件之間的關係。
2.2 使用帶有 REPAIR 選項的 DBCC CHECKDB
如果無法進行備份還原,DBCC CHECKDB 可為您提供內建修復功能:
DBCC CHECKDB (database_name, REPAIR_ALLOW_DATA_LOSS)
WITH ALL_ERRORMSGS, NO_INFOMSGS;
該命令有三個修復等級:
- REPAIR_FAST:僅為了向後相容而保留語法;不做任何修理
- REPAIR_REBUILD:進行修復 沒有數據丟失
- REPAIR_ALLOW_DATA_LOSS:修復所有報告的錯誤,但可能會犧牲一些數據
我們有一個 DBCC CHECKDB 綜合指南 涵蓋所有選項和場景(微軟的官方文件也可用 此處).
2.3 使用 REPAIR_ALLOW_DATA_LOSS 的風險
修復選項伴隨著風險。 REPAIR_ALLOW_DATA_LOSS 可能會完全刪除損壞的頁面,從而導致永久性資料遺失。它也忽略了外鍵約束,這可能會破壞表之間的關係完整性。所以,
- 修復之前,您應該手動備份損壞的 MDF 檔案。
- 修復後,您應該使用 DBCC CHECKCONSTRAINTS 驗證約束以查找業務邏輯缺陷。
2.4 使用 DBCC CHECKTABLE
DBCC CHECKTABLE 為您提供 tar針對特定表中的損壞所採取的方法:
DBCC CHECKTABLE (table_name, REPAIR_ALLOW_DATA_LOSS);
此命令查看一個表而不是整個資料庫。一旦您知道哪些表有問題,它運行得更快並且風險更小。
2.5 將資料庫設定為緊急和單一使用者模式
嚴重損壞的資料庫可能需要緊急模式作為最後的選擇:
ALTER DATABASE [DatabaseName] SET EMERGENCY;
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ([DatabaseName], REPAIR_ALLOW_DATA_LOSS);
如果正常存取失敗,資料庫管理員可以透過緊急模式獲得唯讀存取權限。這個程序重建交易日誌,但您會失去交易一致性並破壞 RESTORE 鏈。在嘗試緊急修復之前,請先備份資料庫文件,以保持恢復選項暢通。
2.6 “Hack Attach”方法
如果您無法將損壞的 MDF 檔案附加到 SQL Server,你可以嘗試「hack attachment」方法:
- 建立與損壞資料庫同名的虛擬資料庫
- 使虛擬資料庫離線
- 刪除虛擬資料庫文件
- 將損壞的 MDF 檔案複製到虛擬檔案位置
- 使資料庫聯機
這種方法無法解決腐敗問題,但有助於 SQL Server 識別檔案並啟用修復命令。
2.7 修復損壞的主資料庫
主資料庫損壞需要以下步驟:
- 將損壞的 master.mdf 複製為使用者資料庫至另一台伺服器。
- 使用手動方法或 DataNumen SQL Recovery 從中恢復物件。
- 將復原的物件匯出到腳本中。
- 重建主資料庫
在原始伺服器上。
- 執行步驟3中產生的腳本來重新建立使用者和物件。
2.8 恢復可疑的 MSDB 資料庫
MSDB 是一個系統資料庫,用於儲存代理作業、備份和還原歷史記錄、維護計劃以及資料庫郵件配置等資訊。如果該資料庫無法開啟且已被復原程式標記為“可疑”,您可以使用下列方法之一:
- 從備份中復原。
- 使用 instmsdb.sql 重新建立 MSDB
.
3。 運用 DataNumen SQL Recovery 修復損壞的MDF文件
如果上述手動方法失敗,您可以嘗試專業工具,例如 DataNumen SQL Recovery,它可以幫助您修復損壞的 MDF 文件 SQL Server的內建工具無法處理。該軟體採用先進的演算法來獲取most 從損壞的檔案中還原資料並為您提供多種復原選項。
3.1 修復單一文件
單一文件修復過程簡單易行:
- 關閉所有可能更改 MDF 檔案的程式。
- Start DataNumen SQL Recovery.
- 透過輸入名稱或點擊瀏覽按鈕來選擇損壞的 MDF 檔案。
- 如果需要,請包含任何相關的 NDF 文件。
- 選擇來源資料庫格式或讓系統偵測:
- 選擇您想要儲存復原的檔案的位置。
- 點擊“ Start Recovery」按鈕,軟體將連接到您的 SQL Server 實例與您的伺服器名稱和登入詳細資訊。
- 然後,該軟體將使用其先進的恢復演算法修復您的檔案。
您將看到一個進度條,顯示修復的進展。完成後,您可以在 SQL Server 管理工作室。
3.2 修復一批文件
擁有多個損壞資料庫的公司可以透過大量修復來節省時間。您可以將所有損壞的 MDF 檔案新增至佇列,設定輸出首選項,然後tar恢復。此功能在需要修復系統資料庫問題的商業環境中非常有用。
詳細步驟:
- 轉到“批量恢復”選項卡。
- 點選「新增檔案」可新增多個 SQL Server 需要修復的 MDF 檔案。
- 您也可以點選「搜尋檔案」在本機電腦上尋找需要修復的檔案。
- 點擊“ Star恢復”按鈕
- 清單中的所有 PST 檔案將逐一修復。
3.3 從硬碟、磁碟映像或備份檔案恢復
DataNumen SQL Recovery 比標準恢復做得更多。它可以從以下位置取得 SQL 資料:
- VMWare VMDK 虛擬機器磁碟文件
- 虛擬 PC VHD 文件
- ISO 映像檔
- Windows NT備份檔(。bkf)
- Acronis True Image 檔案 (.tib)
- 諾頓·格ost 文件(.gho、.v2i)
這種靈活性是在各種情況下恢復資料的好方法,例如:
- 您刪除了 SQL Server.
- 您格式化硬碟。
- 硬碟故障。
- VMWare 或 Virtual PC 中的虛擬磁碟已損壞,並且您在其上儲存資料庫。
- 備份媒體上的備份檔案已損壞或損毀,您無法從中還原資料庫檔案。
- 磁碟映像檔已損壞,您無法從中復原 MDF 檔案。
在上述情況下,您仍然可以恢復 SQL Server 直接從硬碟、磁碟映像或備份檔案取得資料。
如果您手邊有磁碟映像或備份文件,則可以執行以下操作:
- 點選“...”按鈕選擇來源檔案。
- 在「開啟檔案」對話方塊中,選擇「所有檔案(*.*)」作為篩選器。
- 選擇磁碟映像或備份檔案作為要修復的來源檔案。
- 設定輸出固定資料庫檔案名,例如E_Drive_fixed.mdf。
如果你想直接從硬碟恢復,你可以使用 DataNumen Disk Image 建立硬碟機的磁碟映像檔作為來源文件 DataNumen SQL Recovery:
- 選擇硬碟或磁碟。
- 設定輸出影像檔名。
- 點擊“ Start 複製”按鈕從硬碟/磁碟建立磁碟映像檔。
3.4 恢復已刪除的記錄和表
如果你誤刪除了表中的某些記錄,或誤刪除了資料庫中的某些表,你可以透過 DataNumen SQL Recovery.
對於未刪除的記錄,它們的顯示順序可能與刪除前的順序不同,因此在恢復之後,您可能需要使用SQL語句查找這些未刪除的記錄。
對於未刪除的表,如果無法恢復其名稱,則將它們重命名為“ Recovered_Table1”,“ Recovered_Table2”,依此類推……
3.5 從勒索軟體或病毒中恢復
標準方法通常無法修復被惡意軟體加密的資料庫。 DataNumen SQL Recovery 利用特殊演算法從勒索軟體加密的 MDF 檔案中獲取數據,而無需向攻擊者付費。即使加密損壞了檔案的頭部或內部結構,軟體也可以恢復檔案。
3.6 修復恢復的文件
如果 MDF 檔案恢復 DataNumen Data Recovery (或其他資料復原工具)無法附加 SQL Server,這些檔案可能仍然存在一些損壞。在這種情況下,使用 DataNumen SQL Recovery 再次修復它們,以確保其數據可訪問 SQL Server.
3.7 從 tempdb.mdf 恢復
當 SQL Server 正在運行,它將存儲所有速度rar數據,包括所有速度rary將表和存儲過程節奏化rar您的數據庫名為tempdb.mdf。 發生數據災難時,如果無法從現有mdf和關聯的ndf文件中恢復想要的數據,則仍然可以通過以下方式從tempdb.mdf中恢復數據: DataNumen SQL Recovery, 如下:
- 停止 SQL Server 數據引擎服務。
- 使用Windows搜索功能在計算機上搜索tempdb.mdf文件的位置 SQL Server 實例已安裝。
- 找到tempdb.mdf後,您可以選擇它作為要還原的來源文件,並使用 DataNumen SQL Recovery 恢復它。
3.8 範例文件
| SQL Server 版本 | MDF文件損壞 | MDF文件由固定 DataNumen SQL Recovery |
| SQL Server 2014 | 錯誤1_4.mdf | 錯誤1_4_fixed.mdf |
| SQL Server 2014 | 錯誤2_4.mdf | 錯誤2_4_fixed.mdf |
| SQL Server 2014 | 錯誤4_4.mdf | 錯誤4_4_fixed.mdf |
| SQL Server 2014 | 錯誤5_4.mdf | 錯誤5_4_fixed.mdf |
4. 線上恢復服務
當無法或不方便下載和安裝復原軟體時,線上服務為您提供了修復 SQL 資料庫的另一種方法。這些線上服務有助於修復損壞的 MDF 文件,而無需深厚的技術知識。
4.1 簡單的恢復過程
線上 SQL 復原服務遵循易於使用的流程:
- 上傳損壞的文件 – 您的損壞的 MDF 檔案透過加密連線安全地傳輸到服務提供者的伺服器
- 處理和分析 – 該服務使用專門的演算法掃描您的檔案並識別可恢復的數據
- 預覽恢復結果 – 您可以在進行完全復原之前預覽可復原的資料庫對象
- 下載修復文件 – 修復後的資料庫檔案或 SQL 腳本在處理後可用
這些雲端服務可與 SQL Server 資料庫文件,如.mdf、.ndf 和 .ldf。文件大小和損壞嚴重程度決定了處理時間,從幾秒到幾分鐘不等。
4.2 優點和缺點
線上恢復的優點:
- 您無需安裝軟體—非常適合受限環境或沒有管理員權限的用戶
- 適用於任何作業系統,包括 macOS 和 Linux
- 無需下載大型軟體包即可使用
- 使用者友善的介面適合具有基本技術技能的人
- 您可以在購買前查看可恢復的數據
需要考慮的限制:
- 將敏感資料庫資訊上傳至第三方伺服器引發隱私問題
- 最大資料庫大小有限制
- 自訂選項比離線工具少
- 恢復速度取決於伺服器效能和負載
- 演示版本僅顯示一些可恢復的數據,直到購買
離線復原工具為您提供更多控制和隱私,但需要更多技術專業知識。米ost 線上服務讓您可以透過免費演示測試其有效性。這些演示恢復範例資料並使用佔位符標記其他可恢復的項目。
線上和離線復原之間的最佳選擇取決於您的需求。時間壓力、技術技能、資料敏感性以及 MDF 檔案損壞的類型都在這一決定中發揮著重要作用。
5.更多解決方案
雖然前面章節介紹的方法處理 most MDF 檔案損壞場景下,資料庫復原領域提供了更多專業解決方案。我們評估了多種方法,並整理了 這份綜合清單列出了ost 有效的替代方法 對核心修復策略進行補充。
6. 修復後:驗證並保護資料庫
修復損壞的 MDF 檔案只能解決一半的問題。成功恢復後,您的資料庫需要證明正確並確保安全,以維護資料完整性並阻止未來出現問題。
6.1 檢查恢復的資料完整性
詳細的驗證檢查確保修復後所有資料保持完好。帶有 DATA_PURITY 的 DBCC CHECKDB 指令掃描無效值:
DBCC CHECKDB (database_name) WITH DATA_PURITY, NO_INFOMSGS;
此命令會發現可能無效或超出其資料類型範圍的列值。請記住,您必須手動修復任何偵測到的錯誤,因為修復選項無法自動修復它們。
DBCC CHECKCONSTRAINTS 有助於驗證業務邏輯是否保持完整,因為修復作業不會檢查或維護外鍵約束。
6.2 重建索引和約束
一旦資料完整性檢查完畢,效能優化就成為下一步。修復操作經常會使索引變得碎片化,需要快速關注:
ALTER INDEX ALL ON table_name REBUILD;
核心團隊應先重建特定的高使用率索引,以便在關鍵系統上快速恢復效能。這創造了新的、適當的osted 索引ost 查詢回應時間。
6.3 備份修復後的資料庫
立即建立新修復的資料庫的完整備份:
BACKUP DATABASE database_name
TO DISK = 'path\backup_file.bak'
WITH CHECKSUM, FORMAT;
CHECKSUM 選項在操作期間檢查備份完整性。隨後在測試伺服器上測試備份,以確保其正常運作,然後再用於生產復原。
6.4 設定監控和警報
主動監控有助於在潛在問題破壞資料之前檢測到它們。設定關鍵指標的警報,包括:
- CPU 百分比(門檻:90%)
- 資料空間使用百分比(閾值:95%)
- 工人使用率(閾值:60%)
- 死鎖(任何情況)
- 連線嘗試中的系統錯誤
Azure Monitor 或 SQL Server Management Studio 可以設定這些警報。狀態警報會一直觸發直到解決,從而防止問題持續發生期間通知風暴。
應每週使用 DBCC CHECKDB 對關鍵資料庫進行完整性檢查,以便儘早發現問題。
7. 常見問題
資料庫損壞引發了用戶的許多疑問。讓我們看看修復 MDF 檔案的一些常見問題 SQL Server.
7.1 沒有 LDF 檔案我能恢復 MDF 檔案嗎?
答:是的,使用專業工具,例如 DataNumen SQL Recovery,您可以在沒有 LDF 檔案的情況下恢復 MDF 檔案。
7.2 我應該使用第三方修復工具還是內建方法?
答:內建方法值得先嘗試,因為它們有官方支援。儘管如此,在嚴重損壞的情況下,第三方工具可能會恢復更多資料。最佳選擇取決於:
- 數據關鍵性
- 備份可用性
- 時間限制
- 預算限制
- 資料遺失的風險承受能力
8. 結論
SQL Server 資料庫損壞需要快速檢測和適當的復原方法來最大限度地減少資料損失。 MDF 檔案損壞跡象可協助您在出現問題時快速採取行動。您有多種恢復選項,包括內置 SQL Server 工具到專業的第三方解決方案,如 DataNumen SQL Recovery 工具。以下是本文的摘要:
預防勝於治療。定期的資料庫維護、適當的備份程序和磁碟健康監控大大降低了損壞風險。系統還需要透過完整性檢查來證明恢復的資料庫是正確的,並重建索引以確保修復後資料的可靠性。









