重新附加從 RAID 5 恢復的 MDF 文件
我們公司多年來一直在執行 SQL Server 2005 伺服器,但就在最近,我們遇到了一些麻煩。伺服器配置了 RAID 5,陣列中有一個熱備用磁碟。其中一個磁碟出現故障,隨後不久第二個磁碟出現故障。不幸的是,我們沒有備份大部分數據(請不要給我“應該有備份”的評論——我知道一個可靠的備份計劃的重要性)。
所以我們是兩個磁碟down了,我們沒有正式的DBA,數據庫也無法訪問。我們的一名 IT 人員試圖恢復 RAID 陣列,我們認為 RAID 已開始重建,但他被命令將其關閉,因為擔心在 RAID 重建期間可能會失去數據。
我們將整個伺服器發送給了一家數據恢復公司。他們花了兩週時間在伺服器上工作,首先對所有驅動器進行映像,然後從 RAID 中重建數據。
我收到了一個包含所有“恢復”文件的硬碟驅動器。這是主要是數據庫文件 (MDF) 和傳輸日誌 (LDF) 的集合。伺服器上的每個數據庫僅由一個 MDF 和一個 LDF 組成。我目前無法訪問原始伺服器,因此我一直在嘗試將這些數據庫附加到另一台執行 SQL Server 2005 的伺服器上。但是,當我嘗試重新附加任何數據庫時,我遇到了問題。我收到的一些錯誤如下所示。我沒有運氣恢復這些文件中的任何一個。我按照本文中概述的步驟進行操作,但即使如此,也無法恢復任何文件。
我們向數據恢復公司支付了一大筆錢,用於從該伺服器恢復數據,我的任務是毫無疑問地證明這些數據對我們有用或沒用。我根本沒有經驗可以確定,所以我向你提出問題,dba.stackexchange: 有沒有辦法恢復這些文件?
SQL Server 檢測到基於邏輯一致性的 I/O 錯誤:pageid 不正確(預期為 1:134;實際為 0:0)。它發生在讀取文件“G:\Data\Data201309.mdf”中偏移量 0x0000000010c000 的數據庫 ID 17 中的頁面 (1:134) 期間。SQL Server 錯誤日誌或系統事件日誌中的其他消息可能會提供更多詳細資訊。這是威脅數據庫完整性的嚴重錯誤情況,必須立即糾正。完成完整的數據庫一致性檢查 (DBCC CHECKDB)。這個錯誤可能是由許多因素引起的;有關詳細資訊,請參閱 SQL Server 聯機叢書。
文件“G:\Data\Data201112_log.ldf”的標頭不是有效的數據庫文件標頭。PageAudit 屬性不正確。(Microsoft SQL Server,錯誤:5172)
G:\Data\Data201005.mdf 不是主數據庫文件。(Microsoft SQL Server,錯誤:5171)
處理數據庫“Data201008”的日誌時出錯。如果可能,從備份中恢復。如果備份不可用,則可能需要重建日誌。
SQL Server 檢測到基於邏輯一致性的 I/O 錯誤:校驗和不正確(預期:0xe9b50f3a;實際:0x162a0f84)。它發生在讀取文件“G:\Data\Data200803.mdf”中偏移量 0x000000f9a00000 的數據庫 ID 17 中的頁面 (1:511232) 期間。SQL Server 錯誤日誌或系統事件日誌中的其他消息可能會提供更多詳細資訊。這是威脅數據庫完整性的嚴重錯誤情況,必須立即糾正。完成完整的數據庫一致性檢查 (DBCC CHECKDB)。這個錯誤可能是由許多因素引起的;有關詳細資訊,請參閱 SQL Server 聯機叢書。無法打開新數據庫“Data200804”。CREATE DATABASE 已中止。(Microsoft SQL Server,錯誤:824)
有什麼辦法可以恢復這些文件嗎?
不。
長答案是這樣的:
- 您首先必須修復 MDF。嘗試將其與
ATTACH_REBUILD_LOG
- 當您遇到錯誤(如
incorrect pageid (expected 1:134; actual 0:0). It occurred during a read of page (1:134)
)時,您必須編輯文件並修復它。當然,這需要您非常詳細地了解(未記錄的)MDF 格式。佩奇剖析是一個不錯的起點,但它實際上只是表面上的。我真的希望您的 MDF引導頁面正確“恢復”。- 修復所有錯誤後,嘗試評估 MDF 的一致性,如果可能的話,使用 CHECKDB。修復任何錯誤,有些需要再次手動修復。
- 從理論上講,您可以嘗試查看可以修復和應用多少已恢復的 LDF。由於 LDF 格式的複雜性和 LSN鏈的要求,我估計這個任務的複雜性是修復 MDF 的 10 倍。我會放棄嘗試重建“恢復”日誌的想法,只是嘗試“重建”恢復的數據。
您可以使用OrcaMDF嘗試瀏覽“冷”的 MDF 並查看 OrcaMDF 是否抱怨結構問題,然後嘗試修復它們。
“恢復”過程保持 MDF 文件大小並為壞扇區恢復 0 至關重要。如果他們只是刪除了不可恢復的扇區,你就沒有機會了。