симптом:

Когда используешь DBCC CHECKDB с REPAIR_ALLOW_DATA_LOSS параметр для восстановления поврежденной базы данных .MDF, например:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

вы видите следующее сообщение об ошибке:

Результаты DBCC для "xxxx".
CHECKDB обнаружил 0 ошибок распределения и 0 ошибок согласованности в базе данных «xxxx».
Msg 824, уровень 24, состояние 2, строка 8
SQL Server обнаружена ошибка ввода-вывода на основе логической согласованности: неверная контрольная сумма (ожидаемая: 0xea8a9a2f; фактическая: 0x37adbff8). Это произошло во время чтения страницы (1:28) в базе данных с идентификатором 39 по смещению 0x00000000038000 в файле 'xxxx.mdf'. Дополнительные сообщения в SQL Server журнал ошибок или журнал системных событий могут предоставить более подробную информацию. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку целостности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Книги в Интернете.

где xxxx.mdf - имя восстанавливаемого поврежденного файла MDF. Хотя CHECKDB говорит

CHECKDB обнаружил 0 ошибок распределения и 0 ошибок согласованности в базе данных «xxxx».

Это все еще ошибка согласованности (Сообщение 824) в базе данных.

Скриншот сообщения об ошибке:

ошибка ввода-вывода на основе логической согласованности: неверная контрольная сумма

Если повреждение серьезное, то сообщения об ошибках будут постоянно появляться (Сообщение 824), как показано ниже:

Msg 824, уровень 24, состояние 6, строка 2 SQL Server обнаружена ошибка ввода-вывода на основе логической согласованности: неверная контрольная сумма (ожидаемая: 0x3d17dfef; фактическая: 0xd81748ef). Это произошло во время чтения страницы (1: 0) в базе данных с идентификатором 39 по смещению 0000000000000000 в файле 'xxxx.mdf'. Дополнительные сообщения в SQL Server журнал ошибок или журнал системных событий могут предоставить более подробную информацию. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку целостности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Книги в Интернете.

Msg 824, уровень 24, состояние 6, строка 4 SQL Server обнаружена ошибка ввода-вывода на основе логической согласованности: неверная контрольная сумма (ожидаемая: 0x3d17dfef; фактическая: 0xd81748ef). Это произошло во время чтения страницы (1: 0) в базе данных с идентификатором 39 по смещению 0000000000000000 в файле 'xxxx.mdf'. Дополнительные сообщения в SQL Server журнал ошибок или журнал системных событий могут предоставить более подробную информацию. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку целостности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Книги в Интернете.

где xxxx.mdf - имя восстанавливаемого поврежденного файла MDF.

Скриншот сообщения об ошибке:

Если повреждение более серьезное, вы можете увидеть Сообщение 7909 следующим образом Сообщение 824:

Результаты DBCC для "xxxx".
CHECKDB обнаружил 0 ошибок распределения и 0 ошибок согласованности в базе данных «xxxx».
Msg 824, уровень 24, состояние 2, строка 8
SQL Server обнаружена ошибка ввода-вывода на основе логической согласованности: неверная контрольная сумма (ожидаемая: 0xcfcd2118; фактическая: 0x6fc599d6). Это произошло во время чтения страницы (1: 1) в базе данных с идентификатором 39 по смещению 0x00000000002000 в файле 'xxxx.mdf'. Дополнительные сообщения в SQL Server журнал ошибок или журнал системных событий могут предоставить более подробную информацию. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку целостности базы данных (DBCC CHECKDB). Эта ошибка может быть вызвана многими факторами; для получения дополнительной информации см. SQL Server Книги в Интернете.
Msg 7909, уровень 20, состояние 1, строка 8
Не удалось выполнить восстановление в аварийном режиме. Необходимо выполнить восстановление из резервной копии.

где xxxx - имя базы данных, а xxxx.mdf - физическое имя файла базы данных.

Внимание Сообщение 7909 является серьезной ошибкой, которая может возникнуть во многих ситуациях, когда SQL Server думаю, что база данных не подлежит восстановлению.

Скриншот сообщения об ошибке:

пустой

Точное объяснение:

Данные в файле MDF хранятся как 8 КБ. страниц. На каждой странице есть необязательное поле контрольной суммы.

Если команда DBCC CHECKDB находит значения контрольной суммы на странице заголовка, странице PFS и некоторых страницах данных недопустимы и не может исправить проблему, она сообщит об этой ошибке (Сообщение 824). Если повреждение серьезное, могут быть постоянные ошибки (Сообщение 824) или с последующей другой ошибкой (Сообщение 7909).

Вы можете использовать наш продукт DataNumen SQL Recovery для восстановления данных из поврежденного файла MDF и устранения этой ошибки.

Образцы файлов:

Примеры поврежденных файлов MDF, которые вызывают ошибку (Ошибка одиночного сообщения 824):

SQL Server версия Поврежденный файл MDF Файл MDF исправлен DataNumen SQL Recovery
SQL Server 2014 Error1_3.mdf Error1_3_fixed.mdf

Примеры поврежденных файлов MDF, которые вызывают ошибку (Непрерывное сообщение 824 ошибок):

SQL Server версия Поврежденный файл MDF Файл MDF исправлен DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf Ошибка1_1_fixed.mdf

Примеры поврежденных файлов MDF, которые вызывают ошибку (Ошибка сообщения 824, за которой следует ошибка сообщения 7909):

SQL Server версия Поврежденный файл MDF Файл MDF исправлен DataNumen SQL Recovery
SQL Server 2014 Error1_2.mdf Error1_2_fixed.mdf

 

Ссылки:

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