Симптом:

При використанні 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' - ім'я пошкодженого файлу МДФ, що відновлюється. Хоча 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' - ім'я пошкодженого файлу МДФ, що відновлюється.

Знімок екрана повідомлення про помилку:

Якщо корупція серйозніша, ви можете побачити Повідомлення 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, які спричинять помилку (Поодинока помилка 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