Próba pobrania strony logicznej (5: 65424) w bazie danych 2 nie powiodła się

11

Otrzymuję następujące SqlExceptionpo wywołaniu procedury przechowywanej:

Próba pobrania strony logicznej (5: 65424) w bazie danych 2 nie powiodła się. Należy do jednostki alokacji 7349876362857938944, a nie do 4899918190390149120.

Wystąpił wyjątek System.Data.SqlClient.SqlException
Komunikat = "Próba pobrania strony logicznej (5: 65424) w bazie danych 2. nie powiodła się. Należy do jednostki alokacji 7349876362857938944, a nie do 4899918190390149120.

Źródło = ". Dostawca danych Net SqlClient"
Kod błędu = -2146232060
Klasa = 21
Numer linii = 257
Liczba = 605
Procedura = "ispDisplayCount"
Serwer = "10.10.1.1"
Stan = 3

Co oznacza ten wyjątek? Czy istnieje rozwiązanie tego problemu?

Chociaż baza danych, do której odwołuje się powyższy błąd, wskazuje tempdb, podobne błędy odnoszące się do komunikatu 605 można naprawić, korzystając z poniższych odpowiedzi.

Msg 605, poziom 21, stan 3, wiersz 1
Próba pobrania strony logicznej (1: 8687634) w bazie danych 7 nie powiodła się. Należy do jednostki alokacji 72057594364821504, a nie do 72057594052476928.

Parag Meshram
źródło

Odpowiedzi:

11

Jeśli identyfikator bazy danych wskazany w komunikacie o błędzie to 2baza danych, której dotyczy, to tempdb. Jedną z metod naprawy tego typu uszkodzenia w tempdb jest po prostu zrestartowanie instancji SQL Server. W przypadku identyfikatorów bazy danych innych niż 2 postępuj zgodnie z poniższymi zaleceniami.

Może być konieczne przywrócenie z kopii zapasowej, ale spróbuj tego:

Jako członek roli sysadmin wykonaj DBCC PAGE (2, 5, 65424, 3);i wyszukaj Metadata: IndexIdwartość.

  • Jeśli jest 0(sterty) lub 1(indeks klastrowany), musisz przywrócić z kopii zapasowej.
  • Jeśli nie, 0 lub 1możesz po prostu odbudować indeks nieklastrowany.

Uruchom komendę DBCC i daj nam znać, co znajdziesz. Sprawdź https://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/, aby uzyskać szczegółowe informacje na temat DBCC PAGEpolecenia

Matt M.
źródło
10

Twoja baza danych jest uszkodzona. Czas przywrócić z dobrej kopii zapasowej. Jeśli nie masz kopii zapasowych, czas dowiedzieć się o znaczeniu testowania planu odzyskiwania . Gwarantuje się również sprawdzenie niezawodności sprzętu, uważaj na ostrzeżenia i błędy w logach systemowych.

Remus Rusanu
źródło
9

Błąd wskazuje, że baza danych jest uszkodzona. Dobrą wiadomością jest to, że identyfikator bazy danych 2 wskazuje, że jest to baza danych tempdb, więc naprawienie tego jest łatwe - wystarczy zrestartować instancję bazy danych.

Po ponownym uruchomieniu instancji powinieneś dowiedzieć się, dlaczego nastąpiło uszkodzenie. Zacznij od uruchomienia chkdskna dysku, na którym znajduje się plik problemu. Następnie musisz spojrzeć na samą pamięć i sprawdzić, czy są tam jakieś problemy. Może to być problem z dyskiem fizycznym, mogą być sterowniki karty HBA lub RAID itp.

mrdenny
źródło
Denny, czy uważasz, że przeprowadzanie kontroli stanu pamięci RAM również byłoby korzystne? Czy widziałeś uszkodzoną stronę w pamięci RAM, która również przekłada się na uszkodzenie na dysku?
Ali Razeghi,
1
Jeśli jest zła pamięć RAM, która może spowodować zgłoszenie strony jako brudnej. Szanse są znacznie większe, że jest to problem z podsystemem dyskowym niż z pamięcią. To byłoby następne miejsce, jeśli dyski są w porządku.
mrdenny
2

Udało mi się to rozwiązać, czyszcząc pamięć podręczną SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

Najwyraźniej ponowne uruchomienie usługi SQL miałoby taki sam wpływ.

(za pośrednictwem Made By SQL , odtworzone tutaj, aby pomóc innym!)

8128
źródło
1

W moim przypadku rozwiązaniem było obcięcie i ponowne wypełnienie danych w odpowiednich tabelach .

Najprawdopodobniej dane w tabelach były uszkodzone.

xameeramir
źródło
1

Wiele osób słyszało o tym, że „ baza danych jest uszkodzona, trzeba ją przywrócić ”, nawet nie zalecając poświęcenia kilku minut na wykonanie poniższych czynności; przejrzyj swoje dzienniki, dowiedz się, kiedy problem pojawił się po raz pierwszy, błąd poprzedzający ten wiersz, sprawdź bazę danych / tabelę, do której należy strona

W moim przypadku ten błąd został poprzedzony przez;

Nie można znaleźć wpisu indeksu w indeksie ID 9, tabeli 629577281, w bazie danych „XYZ”. Wskazany indeks jest uszkodzony lub występuje problem z bieżącym planem aktualizacji

Obejściem tego problemu było prześledzenie wskazanego indeksu i tymczasowe usunięcie go.

później znalazłem ten link Microsoft, który opisuje mój dokładny problem i oferuje łącze do rozwiązania

mam nadzieję, że pomoże to komuś innemu w przyszłości

daffyjeje
źródło