симптом:

Когда используешь 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 Ошибка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, которые вызовут ошибку (Ошибка Msg 824, за которой следует ошибка Msg 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