MSSQLSERVER_605

Dotyczy:SQL Server

Szczegóły

Attribute Value
Nazwa produktu SQL Server
Identyfikator zdarzenia 605
Źródło zdarzenia MSSQLSERVER
Składnik SQLEngine
Nazwa symboliczna BŁĘDNA STRONA
Tekst wiadomości Próba pobrania strony logicznej %S_PGID w bazie danych %d nie powiodła się. Należy do jednostki alokacji %I64d nie do %I64d.

Explanation

Ten błąd zazwyczaj oznacza uszkodzenie strony lub alokacji w określonej bazie danych. SQL Server wykrywa uszkodzenia podczas odczytu stron należących do tabeli, podążając za linkami stron lub korzystając z mapy alokacji indeksu (IAM). Wszystkie strony przypisane do tabeli muszą należeć do jednej z jednostek alokacji powiązanych z tabelą. Jeśli identyfikator jednostki alokacji zawarty w nagłówku strony nie odpowiada identyfikatorowi jednostki alokacji powiązanemu z tabelą, wyjątek ten jest podnoszony. Pierwszy identyfikator jednostki alokacji podany w komunikacie o błędzie to ID obecny w nagłówku strony, a druga wartość jednostki alokacji to identyfikator powiązany z tabelą.

Błędy uszkodzenia danych

Poziom nasilenia 21 wskazuje na potencjalne uszkodzenie danych. Możliwe przyczyny to uszkodzony łańcuch stron, uszkodzony IAM lub nieprawidłowy wpis w widoku katalogu sys.objects dla tego obiektu. Błędy te często są spowodowane awarią sprzętu lub sterownika urządzenia dysku.

Błędy przejściowe

Poziom nasilenia 12 wskazuje na potencjalny błąd przejściowy; to znaczy, że występuje w pamięci podręcznej i nie oznacza uszkodzenia danych na dysku. Błędy przejściowe 605 mogą być spowodowane następującymi warunkami:

  • System operacyjny przedwcześnie informuje SQL Server o zakończeniu operacji I/O; komunikat o błędzie jest wyświetlany mimo braku rzeczywistego uszkodzenia danych.

  • Uruchomienie zapytania za pomocą podpowiedzi Optymalizatora NOLOCK lub ustawienie poziomu izolacji transakcji na READ UNCOMMITTED. Gdy zapytanie korzystające z poziomu izolacji transakcji NOLOCK lub READ UNCOMMITTED próbuje odczytać dane przesuwane lub zmieniane przez innego użytkownika, pojawia się błąd 605. Aby zweryfikować, że to przejściowy błąd 605, ponownie wykonaj zapytanie później.

Ogólnie rzecz biorąc, jeśli błąd występuje podczas dostępu do danych, ale kolejne operacje DBCC CHECKDB zakończą się bez błędu, to błąd 605 prawdopodobnie był przejściowy.

Akcja użytkownika

Jeśli błąd 605 nie jest przejściowy, problem jest poważny i musi zostać skorygowany wykonując następujące zadania:

  1. Zidentyfikuj tabele powiązane z jednostkami alokacji określonymi w wiadomości, uruchamiając następujące zapytanie. Zastąp allocation_unit_id jednostki alokacji określone w komunikatie o błędzie.

    USE [database_name];  
    
    GO  
    
    SELECT au.allocation_unit_id, OBJECT_NAME(p.object_id) AS table_name, fg.name AS filegroup_name,  
    
    au.type_desc AS allocation_type, au.data_pages, partition_number  
    
    FROM sys.allocation_units AS au  
    
    JOIN sys.partitions AS p ON au.container_id = p.partition_id  
    
    JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id  
    
    WHERE au.allocation_unit_id = '<allocation_unit_id>' OR au.allocation_unit_id = '<allocation_unit_id>'  
    
    ORDER BY au.allocation_unit_id;  
    
    GO  
    
  2. Wykonaj DBCC CHECKTABLE bez klauzuli REPAIR w tabeli powiązanej z drugim ID jednostki alokacji podanym w wiadomości błędu.

  3. Wykonaj DBCC CHECKDB bez klauzuli REPAIR tak szybko, jak to możliwe, aby określić pełny zakres uszkodzenia całej bazy danych.

  4. Sprawdź dziennik błędów pod kątem innych błędów, które często towarzyszą błędowi 605, oraz przeanalizuj dziennik zdarzeń Windows pod kątem problemów związanych z systemem lub sprzętem. Napraw wszelkie problemy sprzętowe zawarte w logach.

Jeśli problem nie jest związany ze sprzętem, wykonaj jedno z następujących zadań:

  1. Przywróć bazę danych z znanej czystej kopii zapasowej. Możesz wykorzystać funkcję przywracania stron do przywrócenia tylko uszkodzonych stron.

  2. Uruchom DBCC CHECKDB z klauzulą REPAIR zalecaną przez operację DBCC CHECKDB wykonaną w kroku 3, aby naprawić uszkodzenie. Jeśli uruchomienie DBCC CHECKDB z jedną z klauzul REPAIR nie rozwiąże problemu, skontaktuj się ze swoim głównym dostawcą wsparcia. Miej wyniki z DBCC CHECKDB dostępne do przeglądu.

    Caution

    Jeśli nie jesteś pewien, jaki wpływ DBCC CHECKDB z klauzulą REPAIR ma na Twoje dane, skontaktuj się ze swoim głównym operatorem wsparcia przed uruchomieniem tego oświadczenia.