Triệu chứng:

Khi đang sử dụng DBCC KIỂM TRADB với REPAIR_ALLOW_DATA_LOSS tham số để sửa chữa cơ sở dữ liệu .MDF bị hỏng, như thế này:

DBCC CHECKDB(xxxx, 'REPAIR_ALLOW_DATA_LOSS')

bạn thấy thông báo lỗi sau:

Kết quả DBCC cho 'xxxx'.
CHECKDB tìm thấy 0 lỗi phân bổ và 0 lỗi nhất quán trong cơ sở dữ liệu 'xxxx'.
Msg 824, cấp 24, trạng thái 2, dòng 8
SQL Server đã phát hiện lỗi I/O dựa trên tính nhất quán logic: tổng kiểm tra không chính xác (dự kiến: 0xea8a9a2f; thực tế: 0x37adbff8). Nó xảy ra trong quá trình đọc trang (1:28) trong cơ sở dữ liệu ID 39 ở offset 0x00000000038000 trong tệp 'xxxx.mdf'. Tin nhắn bổ sung trong SQL Server nhật ký lỗi hoặc nhật ký sự kiện hệ thống có thể cung cấp thêm chi tiết. Đây là một tình trạng lỗi nghiêm trọng đe dọa tính toàn vẹn của cơ sở dữ liệu và phải được khắc phục ngay lập tức. Hoàn thành kiểm tra tính nhất quán của cơ sở dữ liệu đầy đủ (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, xem SQL Server Sách trực tuyến.

trong đó 'xxxx.mdf' là tên của tệp MDF bị hỏng đang được sửa chữa. Mặc dù CHECKDB nói

CHECKDB tìm thấy 0 lỗi phân bổ và 0 lỗi nhất quán trong cơ sở dữ liệu 'xxxx'.

Đây vẫn là một lỗi nhất quán (Tin nhắn 824) trong cơ sở dữ liệu.

Ảnh chụp màn hình thông báo lỗi:

lỗi I/O dựa trên tính nhất quán logic: tổng kiểm tra không chính xác

Nếu tham nhũng nghiêm trọng thì sẽ có thông báo lỗi liên tục (Tin nhắn 824), như sau:

Msg 824, cấp 24, trạng thái 6, dòng 2 SQL Server đã phát hiện lỗi I/O dựa trên tính nhất quán logic: tổng kiểm tra không chính xác (dự kiến: 0x3d17dfef; thực tế: 0xd81748ef). Nó xảy ra trong quá trình đọc trang (1:0) trong cơ sở dữ liệu ID 39 ở offset 0000000000000000 trong tệp 'xxxx.mdf'. Tin nhắn bổ sung trong SQL Server nhật ký lỗi hoặc nhật ký sự kiện hệ thống có thể cung cấp thêm chi tiết. Đây là một tình trạng lỗi nghiêm trọng đe dọa tính toàn vẹn của cơ sở dữ liệu và phải được khắc phục ngay lập tức. Hoàn thành kiểm tra tính nhất quán của cơ sở dữ liệu đầy đủ (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, xem SQL Server Sách trực tuyến.

Msg 824, cấp 24, trạng thái 6, dòng 4 SQL Server đã phát hiện lỗi I/O dựa trên tính nhất quán logic: tổng kiểm tra không chính xác (dự kiến: 0x3d17dfef; thực tế: 0xd81748ef). Nó xảy ra trong quá trình đọc trang (1:0) trong cơ sở dữ liệu ID 39 ở offset 0000000000000000 trong tệp 'xxxx.mdf'. Tin nhắn bổ sung trong SQL Server nhật ký lỗi hoặc nhật ký sự kiện hệ thống có thể cung cấp thêm chi tiết. Đây là một tình trạng lỗi nghiêm trọng đe dọa tính toàn vẹn của cơ sở dữ liệu và phải được khắc phục ngay lập tức. Hoàn thành kiểm tra tính nhất quán của cơ sở dữ liệu đầy đủ (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, xem SQL Server Sách trực tuyến.

trong đó 'xxxx.mdf' là tên của tệp MDF bị hỏng đang được sửa chữa.

Ảnh chụp màn hình thông báo lỗi:

Nếu tham nhũng nghiêm trọng hơn, bạn có thể thấy Tin nhắn 7909 sau Tin nhắn 824:

Kết quả DBCC cho 'xxxx'.
CHECKDB tìm thấy 0 lỗi phân bổ và 0 lỗi nhất quán trong cơ sở dữ liệu 'xxxx'.
Msg 824, cấp 24, trạng thái 2, dòng 8
SQL Server đã phát hiện lỗi I/O dựa trên tính nhất quán logic: tổng kiểm tra không chính xác (dự kiến: 0xcfcd2118; thực tế: 0x6fc599d6). Nó xảy ra trong quá trình đọc trang (1:1) trong cơ sở dữ liệu ID 39 ở offset 0x00000000002000 trong tệp 'xxxx.mdf'. Tin nhắn bổ sung trong SQL Server nhật ký lỗi hoặc nhật ký sự kiện hệ thống có thể cung cấp thêm chi tiết. Đây là một tình trạng lỗi nghiêm trọng đe dọa tính toàn vẹn của cơ sở dữ liệu và phải được khắc phục ngay lập tức. Hoàn thành kiểm tra tính nhất quán của cơ sở dữ liệu đầy đủ (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, xem SQL Server Sách trực tuyến.
Msg 7909, cấp 20, trạng thái 1, dòng 8
Sửa chữa ở chế độ khẩn cấp không thành công. Bạn phải khôi phục từ bản sao lưu.

trong đó 'xxxx' là tên cơ sở dữ liệu và 'xxxx.mdf' là tên tệp vật lý của cơ sở dữ liệu.

Chú thích Tin nhắn 7909 là một lỗi nghiêm trọng có thể xảy ra trong nhiều tình huống bất cứ khi nào SQL Server nghĩ rằng cơ sở dữ liệu không thể phục hồi được.

Ảnh chụp màn hình thông báo lỗi:

Giải thích chính xác:

Dữ liệu trong tệp MDF được lưu trữ dưới dạng 8KB trang. Mỗi trang có một trường tổng kiểm tra tùy chọn.

Nếu lệnh DBCC CHECKDB tìm thấy các giá trị tổng kiểm tra trong trang tiêu đề, trang PFS và một số trang dữ liệu không hợp lệ và không thể khắc phục sự cố thì nó sẽ báo lỗi này (Tin nhắn 824). Nếu lỗi nghiêm trọng, có thể xảy ra lỗi liên tục (Tin nhắn 824) hoặc theo sau là một lỗi khác(Tin nhắn 7909).

Bạn có thể sử dụng sản phẩm của chúng tôi DataNumen SQL Recovery để khôi phục dữ liệu từ tệp MDF bị hỏng và khắc phục lỗi này.

Các tệp mẫu:

Mẫu các tệp MDF bị hỏng sẽ gây ra lỗi (Lỗi tin nhắn đơn 824):

SQL Server phiên bản Tập tin MDF bị hỏng Tệp MDF được cố định bởi DataNumen SQL Recovery
SQL Server 2014 Lỗi1_3.mdf Error1_3_fixed.mdf

Mẫu các tệp MDF bị hỏng sẽ gây ra lỗi (Lỗi Msg 824 liên tục):

SQL Server phiên bản Tập tin MDF bị hỏng Tệp MDF được cố định bởi DataNumen SQL Recovery
SQL Server 2014 Lỗi1_1.mdf Lỗi1_1_fixed.mdf

Mẫu các tệp MDF bị hỏng sẽ gây ra lỗi (Lỗi Msg 824 tiếp theo là lỗi Msg 7909):

SQL Server phiên bản Tập tin MDF bị hỏng Tệp MDF được cố định bởi DataNumen SQL Recovery
SQL Server 2014 Lỗi1_2.mdf Error1_2_fixed.mdf

 

Tài liệu tham khảo:

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