症狀:

使用時 DBCC CHECKDBREPAIR_ALLOW_DATA_LOSS 修復損壞的.MDF數據庫的參數,如下所示:

DBCC CHECKDB(xxxx,'REPAIR_ALLOW_DATA_LOSS')

您看到以下錯誤消息:

DBCC結果為“ xxxx”。
CHECKDB在數據庫'xxxx'中發現0個分配錯誤和0個一致性錯誤。
消息824,級別24,狀態2,行8
SQL Server 檢測到基於邏輯一致性的I / O錯誤:錯誤的校驗和(預期:0xea8a9a2f;實際:0x37adbff8)。 它是在讀取文件'xxxx.mdf'中偏移量1x28的數據庫ID 39中的頁面(0:00000000038000)期間發生的。 中的其他消息 SQL Server 錯誤日誌或系統事件日誌可能會提供更多詳細信息。 這是嚴重的錯誤情況,威脅數據庫的完整性,必須立即更正。 完成完整的數據庫一致性檢查(DBCC CHECKDB)。 此錯誤可能是由多種因素引起的; 有關更多信息,請參見 SQL Server 在線書籍。

其中“ xxxx.mdf”是要修復的損壞的MDF文件的名稱。 儘管CHECKDB說

CHECKDB在數據庫'xxxx'中發現0個分配錯誤和0個一致性錯誤。

這仍然是一致性錯誤(訊息824)。

錯誤消息的屏幕截圖:

基於邏輯一致性的I / O錯誤:校驗和不正確

如果損壞嚴重,則會連續出現錯誤消息(訊息824), 如下:

消息824,級別24,狀態6,行2 SQL Server 檢測到基於邏輯一致性的I / O錯誤:錯誤的校驗和(預期:0x3d17dfef;實際:0xd81748ef)。 它是在讀取文件'xxxx.mdf'中偏移量1的數據庫ID 0中的頁面(39:0000000000000000)時發生的。 中的其他消息 SQL Server 錯誤日誌或系統事件日誌可能會提供更多詳細信息。 這是嚴重的錯誤情況,威脅數據庫的完整性,必須立即更正。 完成完整的數據庫一致性檢查(DBCC CHECKDB)。 此錯誤可能是由多種因素引起的; 有關更多信息,請參見 SQL Server 在線書籍。

消息824,級別24,狀態6,行4 SQL Server 檢測到基於邏輯一致性的I / O錯誤:錯誤的校驗和(預期:0x3d17dfef;實際:0xd81748ef)。 它是在讀取文件'xxxx.mdf'中偏移量1的數據庫ID 0中的頁面(39:0000000000000000)時發生的。 中的其他消息 SQL Server 錯誤日誌或系統事件日誌可能會提供更多詳細信息。 這是嚴重的錯誤情況,威脅數據庫的完整性,必須立即更正。 完成完整的數據庫一致性檢查(DBCC CHECKDB)。 此錯誤可能是由多種因素引起的; 有關更多信息,請參見 SQL Server 在線書籍。

其中“ xxxx.mdf”是要修復的損壞的MDF文件的名稱。

錯誤消息的屏幕截圖:

空白

如果腐敗更為嚴重,您可能會看到 訊息7909 如下 訊息824:

DBCC結果為“ xxxx”。
CHECKDB在數據庫'xxxx'中發現0個分配錯誤和0個一致性錯誤。
消息824,級別24,狀態2,行8
SQL Server 檢測到基於邏輯一致性的I / O錯誤:錯誤的校驗和(預期:0xcfcd2118;實際:0x6fc599d6)。 它是在讀取文件'xxxx.mdf'中偏移量為1x1的數據庫ID 39中的頁面(0:00000000002000)期間發生的。 中的其他消息 SQL Server 錯誤日誌或系統事件日誌可能會提供更多詳細信息。 這是嚴重的錯誤情況,威脅數據庫的完整性,必須立即更正。 完成完整的數據庫一致性檢查(DBCC CHECKDB)。 此錯誤可能是由多種因素引起的; 有關更多信息,請參見 SQL Server 在線書籍。
消息7909,級別20,狀態1,行8
緊急模式修復失敗。您必須從備份中還原。

其中“ xxxx”是數據庫名稱,“ xxxx.mdf”是數據庫物理文件名稱。

備註 訊息7909 是一個嚴重的錯誤,在很多情況下都可能會發生 SQL Server 認為數據庫無法恢復。

錯誤消息的屏幕截圖:

空白

精確說明:

MDF文件中的數據存儲為8KB 網頁。 每個頁面都有一個可選的校驗和字段。

如果DBCC CHECKDB命令在頁眉頁,PFS頁和某些數據頁中發現校驗和值無效,並且無法糾正該問題,則它將報告此錯誤(訊息824)。 如果腐敗嚴重,則可能會持續出現錯誤(訊息824)或其他錯誤(訊息7909).

您可以使用我們的產品 DataNumen SQL Recovery 從損壞的MDF文件中恢復數據並解決此錯誤。

樣本文件:

樣本損壞的MDF文件將導致錯誤(單個Msg 824錯誤):

SQL Server 版 MDF文件損壞 MDF文件由固定 DataNumen SQL Recovery
SQL Server 2014 錯誤1_3.mdf 錯誤1_3_fixed.mdf

樣本損壞的MDF文件將導致錯誤(連續的Msg 824錯誤):

SQL Server 版 MDF文件損壞 MDF文件由固定 DataNumen SQL Recovery
SQL Server 2014 錯誤1_1.mdf 錯誤1_1_fixed.mdf

樣本損壞的MDF文件將導致錯誤(訊息824錯誤,接著訊息7909錯誤):

SQL Server 版 MDF文件損壞 MDF文件由固定 DataNumen SQL Recovery
SQL Server 2014 錯誤1_2.mdf 錯誤1_2_fixed.mdf

 

參考文獻:

1. https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-824-database-engine-error?view=sql-server-ver15