Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 CHECKDBpolecenia, 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 CHECKSUMopcji 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.