Objaw:

Podczas używania DBCC CHECKDB w REPAIR_ALLOW_DATA_LOSS parametr do naprawy uszkodzonej bazy danych .MDF, na przykład:

DBCC CHECKDB (xxxx, „REPAIR_ALLOW_DATA_LOSS”)

pojawia się następujący komunikat o błędzie:

Wyniki DBCC dla „xxxx”.
CHECKDB znalazł 0 błędów alokacji i 0 błędów spójności w bazie danych „xxxx”.
Msg 824, Level 24, State 2, Line 8
SQL Server wykryto logiczny błąd we / wy oparty na spójności: niepoprawna suma kontrolna (oczekiwana: 0xea8a9a2f; rzeczywista: 0x37adbff8). Wystąpiło podczas odczytu strony (1:28) w bazie danych o identyfikatorze 39 pod przesunięciem 0x00000000038000 w pliku „xxxx.mdf”. Dodatkowe wiadomości w SQL Server dziennik błędów lub dziennik zdarzeń systemowych może zawierać więcej szczegółów. Jest to poważny błąd, który zagraża integralności bazy danych i musi zostać natychmiast usunięty. Wykonaj pełną kontrolę spójności bazy danych (DBCC CHECKDB). Ten błąd może być spowodowany wieloma czynnikami; aby uzyskać więcej informacji, zobacz SQL Server Książki online.

gdzie „xxxx.mdf” to nazwa naprawianego uszkodzonego pliku MDF. Chociaż CHECKDB mówi

CHECKDB znalazł 0 błędów alokacji i 0 błędów spójności w bazie danych „xxxx”.

To wciąż jest błąd spójności (Wiadomość 824) w bazie danych.

Zrzut ekranu z komunikatem o błędzie:

logiczny błąd we / wy oparty na spójności: nieprawidłowa suma kontrolna

Jeśli uszkodzenie jest poważne, będą pojawiać się ciągłe komunikaty o błędach (Wiadomość 824), jak poniżej:

Msg 824, Level 24, State 6, Line 2 SQL Server wykryto logiczny błąd we / wy oparty na spójności: nieprawidłowa suma kontrolna (oczekiwana: 0x3d17dfef; rzeczywista: 0xd81748ef). Wystąpiło podczas odczytu strony (1: 0) w bazie danych o identyfikatorze 39 pod przesunięciem 0000000000000000 w pliku „xxxx.mdf”. Dodatkowe wiadomości w SQL Server dziennik błędów lub dziennik zdarzeń systemowych może zawierać więcej szczegółów. Jest to poważny błąd, który zagraża integralności bazy danych i musi zostać natychmiast usunięty. Wykonaj pełną kontrolę spójności bazy danych (DBCC CHECKDB). Ten błąd może być spowodowany wieloma czynnikami; aby uzyskać więcej informacji, zobacz SQL Server Książki online.

Msg 824, Level 24, State 6, Line 4 SQL Server wykryto logiczny błąd we / wy oparty na spójności: nieprawidłowa suma kontrolna (oczekiwana: 0x3d17dfef; rzeczywista: 0xd81748ef). Wystąpiło podczas odczytu strony (1: 0) w bazie danych o identyfikatorze 39 pod przesunięciem 0000000000000000 w pliku „xxxx.mdf”. Dodatkowe wiadomości w SQL Server dziennik błędów lub dziennik zdarzeń systemowych może zawierać więcej szczegółów. Jest to poważny błąd, który zagraża integralności bazy danych i musi zostać natychmiast usunięty. Wykonaj pełną kontrolę spójności bazy danych (DBCC CHECKDB). Ten błąd może być spowodowany wieloma czynnikami; aby uzyskać więcej informacji, zobacz SQL Server Książki online.

gdzie „xxxx.mdf” to nazwa naprawianego uszkodzonego pliku MDF.

Zrzut ekranu z komunikatem o błędzie:

Jeśli korupcja jest poważniejsza, możesz zobaczyć Wiadomość 7909 następujący sposób Wiadomość 824:

Wyniki DBCC dla „xxxx”.
CHECKDB znalazł 0 błędów alokacji i 0 błędów spójności w bazie danych „xxxx”.
Msg 824, Level 24, State 2, Line 8
SQL Server wykryto błąd we / wy oparty na spójności logicznej: nieprawidłowa suma kontrolna (oczekiwana: 0xcfcd2118; rzeczywista: 0x6fc599d6). Wystąpiło podczas odczytu strony (1: 1) w bazie danych o identyfikatorze 39 pod przesunięciem 0x00000000002000 w pliku „xxxx.mdf”. Dodatkowe wiadomości w SQL Server dziennik błędów lub dziennik zdarzeń systemowych może zawierać więcej szczegółów. Jest to poważny błąd, który zagraża integralności bazy danych i musi zostać natychmiast usunięty. Wykonaj pełną kontrolę spójności bazy danych (DBCC CHECKDB). Ten błąd może być spowodowany wieloma czynnikami; aby uzyskać więcej informacji, zobacz SQL Server Książki online.
Msg 7909, Level 20, State 1, Line 8
Naprawa w trybie awaryjnym nie powiodła się. Musisz przywrócić dane z kopii zapasowej.

gdzie „xxxx” to nazwa bazy danych, a „xxxx.mdf” to fizyczna nazwa zbioru bazy danych.

Note Wiadomość 7909 to poważny błąd, który może wystąpić w wielu sytuacjach, gdy tylko SQL Server myślę, że bazy danych nie można odzyskać

Zrzut ekranu z komunikatem o błędzie:

Dokładne wyjaśnienie:

Dane w pliku MDF są przechowywane jako 8KB stron. Każda strona ma opcjonalne pole sumy kontrolnej.

Jeśli polecenie DBCC CHECKDB znajdzie wartości sumy kontrolnej na stronie nagłówkowej, stronie PFS i niektórych stronach danych są nieprawidłowe i nie może naprawić problemu, zgłosi ten błąd (Wiadomość 824). Jeśli uszkodzenie jest poważne, mogą występować ciągłe błędy (Wiadomość 824) lub inny błąd (Wiadomość 7909).

Możesz skorzystać z naszego produktu DataNumen SQL Recovery aby odzyskać dane z uszkodzonego pliku MDF i rozwiązać ten błąd.

Przykładowe pliki:

Przykładowe uszkodzone pliki MDF, które spowodują błąd (Pojedynczy błąd Msg 824):

SQL Server wersja Uszkodzony plik MDF Plik MDF naprawiony przez DataNumen SQL Recovery
SQL Server 2014 Błąd1_3.mdf Błąd1_3_fixed.mdf

Przykładowe uszkodzone pliki MDF, które spowodują błąd (Ciągłe błędy Msg 824):

SQL Server wersja Uszkodzony plik MDF Plik MDF naprawiony przez DataNumen SQL Recovery
SQL Server 2014 Błąd1_1.mdf Błąd1_1_naprawiony.mdf

Przykładowe uszkodzone pliki MDF, które spowodują błąd (Błąd Msg 824, a po nim błąd Msg 7909):

SQL Server wersja Uszkodzony plik MDF Plik MDF naprawiony przez DataNumen SQL Recovery
SQL Server 2014 Błąd1_2.mdf Błąd1_2_fixed.mdf

 

Referencje:

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