Triệu chứng:

Khi đang sử dụng DBCC CHECKDB với REPAIR_ALLOW_DATA_LOSS để sửa chữa cơ sở dữ liệu .MDF bị hỏng, như sau:

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 khi đọc trang (1:28) trong cơ sở dữ liệu ID 39 ở độ lệch 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 sửa chữa ngay lập tức. Hoàn thành kiểm tra tính nhất quán đầy đủ của cơ sở dữ liệu (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, hãy 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. 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 lôgic: tổng kiểm tra không chính xác

Nếu tham nhũng nghiêm trọng, thì sẽ liên tục có thông báo lỗi (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 khi đọc trang (1: 0) trong cơ sở dữ liệu ID 39 tại 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 sửa chữa ngay lập tức. Hoàn thành kiểm tra tính nhất quán đầy đủ của cơ sở dữ liệu (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, hãy 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 khi đọc trang (1: 0) trong cơ sở dữ liệu ID 39 tại 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 sửa chữa ngay lập tức. Hoàn thành kiểm tra tính nhất quán đầy đủ của cơ sở dữ liệu (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, hãy 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.

Ả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 lôgic: tổng kiểm tra không chính xác (dự kiến: 0xcfcd2118; thực tế: 0x6fc599d6). Nó xảy ra khi đọc trang (1: 1) trong cơ sở dữ liệu ID 39 ở độ lệch 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 sửa chữa ngay lập tức. Hoàn thành kiểm tra tính nhất quán đầy đủ của cơ sở dữ liệu (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố gây ra; để biết thêm thông tin, hãy xem SQL Server Sách trực tuyến.
Msg 7909, cấp 20, trạng thái 1, dòng 8
Không thể sửa chữa chế độ khẩn cấp. 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 vượt quá khả năng phục hồi.

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

trống

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à nó 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ể có 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à giải quyết lỗi này.

Các tệp mẫu:

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

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

Lấy 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 MDF bị hỏng Tệp MDF được cố định bởi DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf Lỗi1_1_fixed.mdf

Lấy 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 MDF bị hỏng Tệp MDF được cố định bởi DataNumen SQL Recovery
SQL Server 2014 Error1_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