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
Automatyczna naprawa stron jest wspierana przez mirroring baz danych oraz przez grupy dostępności Always On. Po tym, jak określone typy błędów uszkodzą stronę, czyniąc ją nieczytelną, partner dublowania bazy danych (główny lub lustrzany) albo replika dostępności (podstawowa lub pomocnicza) podejmuje próbę automatycznego odzyskania tej strony. Partner/replika, która nie może odczytać strony, żąda nowej kopii strony od partnera lub od innej repliki. Jeśli to żądanie się powiedzie, nieczytelna strona zostaje zastąpiona czytelną kopią, co zwykle rozwiązuje błąd.
Ogólnie rzecz biorąc, mirroring baz danych oraz grupy dostępności Always On obsługują błędy I/O w podobny sposób. Nieliczne różnice są tu wyraźnie wskazane.
Uwaga / Notatka
Automatyczna naprawa stron różni się od naprawy DBCC. Wszystkie dane zostają zachowane przez automatyczną naprawę strony. Natomiast korekta błędów za pomocą opcji DBCC REPAIR_ALLOW_DATA_LOSS może wymagać usunięcia niektórych stron, a tym samym danych.
Typy błędów powodujące automatyczną próbę naprawy strony
Automatyczna naprawa stron w mechanizmie dublowania bazy danych próbuje naprawić wyłącznie strony w pliku danych, dla których operacja nie powiodła się z powodu jednego z błędów wymienionych w poniższej tabeli.
| Numer błędu | Description | Przypadki powodujące automatyczne próby naprawy stron |
|---|---|---|
| 823 | Działanie jest wykonywane tylko wtedy, gdy system operacyjny przeprowadził kontrolę cyklicznej redundancji (CRC), która wykazała błąd danych. | ERROR_CRC. Wartość systemu operacyjnego dla tego błędu wynosi 23. |
| 824 | Błędy logiczne. | Błędy danych logicznych, takie jak rozdarte zapisy lub błędna suma kontrolna strony. |
| 829 | Strona została oznaczona jako oczekująca przywrócenia. | Wszystkie |
Aby wyświetlić ostatnie błędy 823 CRC i błędy 824, zobacz tabelę suspect_pages w bazie danych msdb.
Typy stron, których nie da się automatycznie naprawić
Automatyczna naprawa stron nie jest w stanie naprawić następujących typów stron kontrolnych:
Strona nagłówka pliku (ID strony 0).
Strona 9 (strona startowa bazy danych).
Strony alokacyjne: Strony Globalnej Mapy Alokacji (GAM), Strony Współdzielonej Globalnej Mapy Alokacji (SGAM) oraz Strony Wolnej Przestrzeni na Stronie (PFS).
Obsługa błędów I/O w podstawowej/głównej bazie danych
W bazie danych głównej/podstawowej próba automatycznej naprawy stron jest podejmowana tylko wtedy, gdy baza danych znajduje się w stanie SYNCHRONIZED, a serwer główny/podstawowy nadal wysyła rekordy dziennika tej bazy danych do serwera lustrzanego/pomocniczego. Podstawowa sekwencja czynności w automatycznej próbie naprawy strony jest następująca:
Gdy na stronie danych w bazie głównej/podstawowej wystąpi błąd odczytu, baza główna/podstawowa wstawia rekord do tabeli suspect_pages z odpowiednim stanem błędu. W przypadku mirroringu bazy danych zlecenie żąda kopii strony od mirrora. W grupach dostępności Always On replika podstawowa rozsyła żądanie do wszystkich replik pomocniczych i pobiera stronę od repliki, która odpowie jako pierwsza. Żądanie określa identyfikator strony oraz LSN, który znajduje się obecnie na końcu wyczyszczonego logu. Strona jest oznaczona jako oczekująca przywrócenia. Powoduje to, że nie można uzyskać do tego dostępu podczas próby automatycznej naprawy strony. Próby uzyskania dostępu do tej strony podczas próby naprawy zakończą się niepowodzeniem z błędem 829 (oczekiwanie na przywrócenie).
Po otrzymaniu żądania strony serwer lustrzany/wtórny czeka, aż odtworzy dziennik do numeru LSN określonego w żądaniu. Następnie mirror/secondary próbuje uzyskać dostęp do strony w swojej kopii bazy danych. Jeśli można uzyskać dostęp do strony, serwer lustrzany/zapasowy wysyła kopię strony do serwera głównego/podstawowego. W przeciwnym razie partner lustrzany/wtórny zwraca błąd do partnera głównego/podstawowego, a automatyczna próba naprawy strony kończy się niepowodzeniem.
Główny/podstawowy węzeł przetwarza odpowiedź zawierającą nową kopię strony.
Po naprawie podejrzanej strony przez automatyczną próbę naprawy, strona jest oznaczana w tabeli suspect_pages jako przywrócona (event_type = 5).
Jeśli błąd strony I/O spowodował jakiekolwiek odroczone transakcje, po naprawie strony główny/główny próbuje rozwiązać te transakcje.
Obsługa błędów wejścia/wyjścia w lustrzanej/wtórnej bazie danych
Błędy I/O na stronach danych występujących w lustrzanej/wtórnej bazie są generalnie rozpatrywane w ten sam sposób poprzez mirroring bazy danych oraz przez grupy dostępności Always On.
W dublowaniu bazy danych, jeśli serwer lustrzany napotka co najmniej jeden błąd wejścia/wyjścia (I/O) strony podczas ponownego odtwarzania rekordu dziennika, sesja dublowania przechodzi w stan SUSPENDED. W grupach dostępności Always On, jeśli replika wtórna napotka jeden lub więcej błędów strony I/O podczas ponownego wykonywania rekordu logu, baza wtórna wchodzi w stan ZAWIESZONY. W tym momencie system lustrzany/zapasowy wstawia do tabeli suspect_pages wiersz z odpowiednim statusem błędu. Serwer lustrzany/zapasowy następnie żąda kopii strony z serwera głównego/pierwotnego.
Główny/główny próbuje uzyskać dostęp do strony w swojej kopii bazy danych. Jeśli strona jest dostępna, dyrektor/główny wysyła jej kopię do mirror lub secondary.
Jeśli mirror/secondary otrzyma kopie każdej strony, o którą poprosił, próbuje wznowić sesję mirroringu. Jeśli próba automatycznej naprawy strony naprawi podejrzaną stronę, strona jest oznaczana w tabeli suspect_pages jako przywrócona (event_type = 4).
Jeśli serwer lustrzany/wtórny nie otrzyma strony, o którą wystąpił do serwera podstawowego/głównego, próba automatycznej naprawy strony kończy się niepowodzeniem. W przypadku mirroringu bazy danych sesja mirroringu pozostaje zawieszona. W przypadku grup dostępności Always On baza danych wtórna pozostaje zawieszona. Jeśli sesja mirroringu lub dodatkowa baza danych zostanie wznowiona ręcznie, uszkodzone strony zostaną ponownie zaatakowane podczas fazy synchronizacji.
Najlepsze praktyki dla deweloperów
Automatyczna naprawa stron to proces asynchroniczny działający w tle. W związku z tym operacja na bazie danych, która żąda odczytu strony, której nie można odczytać, kończy się niepowodzeniem i zwraca kod błędu odpowiadający przyczynie tego niepowodzenia. Podczas tworzenia aplikacji dla bazy danych lustrzanej lub dostępności, powinieneś przechwytywać wyjątki dla nieudanych operacji. Jeśli kod błędu SQL Server to 823, 824 lub 829, powinieneś spróbować operacji ponownie później.
Jak wyświetlić próby automatycznej naprawy stron
Poniższe dynamiczne widoki zarządzania wyświetlają wiersze zwrotne dla najnowszych prób automatycznej naprawy stron w danej bazie danych dostępności lub bazie lustrzanej, z maksymalnie 100 wierszami na bazę danych.
Grupy dostępności Always On:
sys.dm_hadr_auto_page_repair (Transact-SQL)
Zwraca wiersz dla każdej automatycznej próby naprawy strony w dowolnej bazie danych dostępności na replice dostępności, która jest hostowana przez wystąpienie serwera dla dowolnej grupy dostępności.
Lustrzanie bazy danych:
sys.dm_db_mirroring_auto_page_repair (Transact-SQL)
Zwraca wiersz dla każdej próby automatycznej naprawy strony w dowolnej lustrzanej bazie danych na instancji serwera.