Udostępnij za pośrednictwem


MSSQLSERVER_824

Dotyczy:SQL Server

Szczegóły

[No changes needed]) Wartość
Nazwa produktu SQL Server
Identyfikator zdarzenia 824
Źródło zdarzenia MSSQLSERVER
Składnik SQLEngine
Nazwa symboliczna B_HARDSSERR
Tekst wiadomości Program SQL Server wykrył błąd we/wy oparty na spójności logicznej: %ls. Wystąpiło podczas %S_MSG strony %S_PGID w bazie danych o identyfikatorze %d przy przesunięciu %#016I64x w pliku "%ls". Dodatkowe komunikaty w dzienniku błędów programu SQL Server lub dzienniku błędów systemu operacyjnego mogą zawierać więcej szczegółów. Jest to poważny stan błędu, który zagraża integralności bazy danych i musi zostać natychmiast poprawiony. Wykonaj pełne sprawdzanie spójności bazy danych (DBCC CHECKDB). Ten błąd może być spowodowany wieloma czynnikami; Aby uzyskać więcej informacji, zobacz https://go.microsoft.com/fwlink/?linkid=2252374.

Objaw

W dzienniku błędów programu SQL Server lub dzienniku zdarzeń aplikacji systemu Windows może wystąpić następujący komunikat o błędzie, jeśli sprawdzanie spójności logicznej kończy się niepowodzeniem po odczytaniu lub zapisaniu strony bazy danych:

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.

Jeśli zapytanie SELECT lub DML zostanie uruchomione w tym komunikacie, komunikat o błędzie zostanie zwrócony do aplikacji, a połączenie z bazą danych zostanie zakończone.

Przyczyna

Ten błąd wskazuje, że system Windows zgłasza, że strona została pomyślnie odczytana z dysku, ale program SQL Server wykrył problem ze stroną. Ten błąd jest podobny do błędu 823, z tą różnicą, że system Windows nie wykrył błędu. Błąd 824 zwykle wskazuje problem w podsystemie we/wy, takim jak awaria dysków dyskowych, problemy z oprogramowaniem układowym, wadliwe sterowniki urządzeń itd. Aby uzyskać więcej informacji na temat błędów We/Wy, zobacz Podstawy We/Wy programu Microsoft SQL Server, rozdział 2.

Program SQL Server używa następujących interfejsów API systemu Windows do wykonywania operacji we/wy: ReadFile, , WriteFileReadFileScatteri WriteFileGather. Po zakończeniu tych operacji we/wy program SQL Server sprawdza wszelkie warunki błędu skojarzone z tymi wywołaniami interfejsu API. Jeśli te wywołania interfejsu API kończą się niepowodzeniem z powodu błędu systemu operacyjnego, program SQL Server zgłasza błąd 823. Mogą wystąpić sytuacje, w których wywołanie interfejsu API systemu Windows rzeczywiście powiedzie się, ale dane przesyłane przez operację we/wy mogły napotkać problem ze spójnością logiczną. Te problemy ze spójnością logiczną są zgłaszane za pośrednictwem błędu 824.

Błąd 824 zawiera następujące informacje:

  • Plik bazy danych, względem którego jest wykonywana operacja we/wy
  • Przesunięcie względem pliku, w którym podjęto próbę wykonania operacji wejścia/wyjścia
  • Baza danych, do której należy ten plik
  • Numer strony, który uczestniczył w operacji wejścia/wyjścia
  • Czy operacja była operacją odczytu lub zapisu
  • Szczegółowe informacje na temat sprawdzania spójności logicznej, które zakończyło się niepowodzeniem (typ sprawdzania, rzeczywista wartość i oczekiwana wartość użyta do tego sprawdzenia)

Te testy spójności logicznej to kontrole integralności wykonywane przez program SQL Server, aby zapewnić, że kluczowe elementy danych, które były zaangażowane w transfer we/wy, pozostały nienaruszone w całej operacji we/wy. Kontrole obejmują Checksum, Torn Page (rozdartą stronę), krótki transfer, nieprawidłowy identyfikator strony, nieaktualny odczyt i błąd audytu strony. Charakter wykonanych testów różni się w zależności od różnych opcji konfiguracji na poziomie bazy danych i serwera.

Komunikat o błędzie 824 zwykle wskazuje, że występuje problem z bazowym systemem przechowywania, sprzętem lub sterownikiem, który znajduje się w ścieżce żądania we/wy. Ten błąd może wystąpić w przypadku wystąpienia niespójności w systemie plików lub uszkodzenia pliku bazy danych.

Resolution

Jeśli wystąpi błąd 824, możesz wypróbować następujące rozwiązania:

  • Przejrzyj tabelę suspect_pages w msdb, aby sprawdzić, czy inne strony (w tej samej bazie danych lub różnych bazach danych) mają ten problem.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Sprawdź spójność baz danych znajdujących się w tym samym woluminie (co zgłoszone w komunikacie 824) przy użyciu polecenia DBCC CHECKDB. Jeśli znajdziesz niespójności z DBCC CHECKDB polecenia, skorzystaj ze wskazówek z artykułu Baza wiedzy Jak rozwiązywać problemy z błędami spójności bazy danych zgłoszonymi przez dbCC CHECKDB.

    DBCC CHECKDB;
    
  • Jeśli baza danych, która napotka te błędy 824, nie ma włączonej PAGE_VERIFY CHECKSUM opcji bazy danych, włącz opcję natychmiast. Błędy 824 mogą wystąpić z innych powodów niż błąd sumy kontrolnej, ale funkcja CHECKSUM jest najlepszą opcją do weryfikacji spójności strony po zapisaniu jej na dysku. Użyj tego skryptu, aby zidentyfikować bazy danych, w których opcja CHECKSUM nie jest włączona:

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Przejrzyj dzienniki zdarzeń systemu Windows pod kątem błędów lub komunikatów zgłoszonych z systemu operacyjnego, urządzenia pamięci masowej lub sterownika urządzenia. Jeśli w jakiś sposób są one związane z tym błędem, należy najpierw rozwiązać te błędy. Na przykład oprócz komunikatu 824 można również zauważyć zdarzenie takie jak "Sterownik wykrył błąd kontrolera w \Device\Harddisk4\DR4" zgłoszony przez źródło dysku w dzienniku zdarzeń. W takim przypadku należy ocenić, czy ten plik jest obecny na tym urządzeniu, a następnie najpierw poprawić te błędy dysku.

  • Użyj narzędzia SQLIOSim , aby dowiedzieć się, czy te błędy 824 można odtworzyć poza zwykłymi żądaniami we/wy programu SQL Server. Program SQLIOSim jest dostarczany z programem SQL Server 2008 (10.0.x) i nowszymi wersjami, więc nie ma potrzeby oddzielnego pobierania.

  • Skontaktuj się z dostawcą sprzętu lub producentem urządzenia, aby upewnić się, że:

    • Urządzenia sprzętowe i konfiguracja są zgodne z wymaganiami we/wy programu SQL Server.
    • Sterowniki urządzeń i inne pomocnicze składniki oprogramowania wszystkich urządzeń w ścieżce we/wy są aktualizowane.
  • Jeśli dostawca sprzętu lub producent urządzenia dostarczył Ci jakiekolwiek narzędzia diagnostyczne, użyj ich do oceny kondycji systemu we/wy.

  • Sprawdź, czy istnieją sterowniki filtrów na ścieżce we/wy tych żądań. Możesz uruchomić następujące polecenia, aby wyświetlić listę wszystkich sterowników filtrów w systemie:

    fltmc filters
    fltmc instances
    
    • Wyklucz pliki bazy danych i dziennika ze skanowania przez takie sterowniki filtrów. Aby uzyskać więcej informacji, zobacz Katalogi i rozszerzenia nazw plików do wykluczenia ze skanowania wirusów
    • Sprawdź, czy istnieją jakiekolwiek aktualizacje tych sterowników filtrów
    • Czy te sterowniki filtrów można usunąć lub wyłączyć, aby sprawdzić, czy problem, który powoduje wystąpienie błędu 824, zniknie?
  • Jeśli używasz maszyny wirtualnej, upewnij się, że wszystkie sterowniki wirtualizacji są aktualizowane lub zapoznaj się z dostawcą wirtualizacji, aby uzyskać więcej informacji.

  • Jeśli problem nie jest związany ze sprzętem i jest dostępna znana czysta kopia zapasowa, przywróć bazę danych z kopii zapasowej.