Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Automatická oprava stránek je podporována zrcadlením databáze a skupinami dostupnosti Always On. Poté, co určité typy chyb stránku poškodí a učiní ji nečitelnou, se partner pro zrcadlení databáze (hlavní nebo zrcadlová) nebo dostupnostní replika (primární či sekundární) pokusí stránku automaticky obnovit. Partner/replika, která nemůže stránku přečíst, žádá o novou kopii stránky od svého partnera nebo od jiné repliky. Pokud tento požadavek uspěje, nečitelná stránka je nahrazena čitelnou kopií, což obvykle chybu vyřeší.
Obecně databázové zrcadlení a skupiny dostupnosti Always On zpracovávají chyby vstupu a výstupu stejným způsobem. Několik rozdílů je zde výslovně zmíněno.
Poznámka:
Automatická oprava stránek se liší od opravy DBCC. Všechna data jsou zachována díky automatické opravě stránky. Naopak oprava chyb pomocí možnosti DBCC REPAIR_ALLOW_DATA_LOSS může vyžadovat smazání některých stránek, a tedy i dat.
Typy chyb, které vyvolávají automatický pokus o opravu stránky
Automatická oprava stránek pomocí zrcadlení databáze se snaží opravit pouze stránky v datovém souboru, na kterých operace selhala, kvůli jedné z chyb uvedených v následující tabulce.
| Číslo chyby | Description | Instance, které způsobují automatický pokus o opravu stránky |
|---|---|---|
| 823 | Opatření se podnikají pouze tehdy, pokud operační systém provedl cyklickou kontrolu redundance (CRC), která selhala na datech. | ERROR_CRC. Hodnota operačního systému pro tuto chybu je 23. |
| 824 | Logické chyby. | Logické chyby dat, například neúplný zápis nebo nesprávný kontrolní součet stránky. |
| 829 | Stránka byla označena jako čekající na obnovení. | Všechny. |
Pro zobrazení nedávných 823 chyb CRC a 824 chyb viz tabulka suspect_pages v databázi msdb .
Typy stránek, které nelze automaticky opravit
Automatická oprava stránek nemůže opravit následující typy kontrolních stránek:
Stránka hlavičky souboru (ID stránky 0).
Stránka 9 (začátková stránka databáze).
Stránky přidělování: stránky globálního mapování přidělení (GAM), stránky sdíleného globálního mapování přidělování (SGAM) a stránky volného místa (PFS).
Zpracování chyb I/O v hlavní/primární databázi
V hlavní/primární databázi se automatická oprava stránky zkouší pouze tehdy, když je databáze ve stavu SYNCHRONIZED a hlavní/primární databáze stále odesílá záznamy protokolu transakcí této databáze do zrcadlové/sekundární databáze. Základní sekvence akcí při pokusu o automatickou opravu stránky je následující:
Když v primární databázi dojde na datové stránce k chybě čtení, primární databáze vloží do tabulky suspect_pages záznam s odpovídajícím stavem chyby. Při zrcadlení databáze pak hlavní server požádá o kopii stránky ze zrcadlového serveru. U skupin dostupnosti Always On primární jednotka vysílá požadavek všem sekundárním skupinám a dostane stránku od první k odpovědi. Požadavek specifikuje ID stránky a LSN, které je aktuálně na konci vyčištěného logu. Stránka je označena jako čekající na obnovení. To ji činí nedostupnou během automatického pokusu o opravu stránky. Pokusy o přístup k této stránce během pokusu o opravu selžou s chybou 829 (obnovení čeká na dokončení).
Po obdržení požadavku na stránku čeká zrcadlové/sekundární zařízení, až se záznam přehodnotí na LSN uvedené v požadavku. Poté se zrcadlové/sekundární zařízení pokusí přistupovat ke stránce ve své kopii databáze. Pokud je stránka přístupná, zrcadlový nebo sekundární server pošle kopii stránky řediteli/primárnímu. Jinak zrcadlová/sekundární instance vrátí primární instanci chybu a automatický pokus o opravu stránky selže.
Hlavní/primární proces zpracovává odpověď, která obsahuje novou kopii stránky.
Po opravě podezřelé stránky je stránka v tabulce suspect_pages označena jako obnovená (event_type = 5).
Pokud chyba stránky I/O způsobila nějaké odložené transakce, po opravě stránky se hlavní vlastník/primární uživatel pokusí tyto transakce vyřešit.
Řešení chyb I/O v zrcadlené/sekundární databázi
Chyby vstupu/výstupu na datových stránkách, které se vyskytnou na zrcadlené/sekundární databázi, jsou v rámci zrcadlení databáze i skupin dostupnosti Always On řešeny v zásadě stejným způsobem.
Při zrcadlení databáze, pokud zrcadlo narazí na jednu nebo více chyb stránkového I/O při opakování záznamu v logu, zrcadlení relace přejde do stavu POZASTAVENÉ. U skupin dostupnosti Always On, pokud sekundární replika narazí na jednu nebo více chyb stránkového I/O při opakování záznamu v logu, sekundární databáze přechází do stavu POZASTAVENÝ. V tomto okamžiku zrcadlové/sekundární vloží řádek do tabulky suspect_pages s příslušným chybovým stavem. Zrcadlový nebo sekundární server si pak od primárního serveru vyžádá kopii stránky.
Primární/hlavní server se pokouší přistoupit ke stránce ve své kopii databáze. Pokud je stránka přístupná, primární uzel odešle kopii stránky zrcadlovému nebo sekundárnímu uzlu.
Pokud zrcadlo nebo sekundární server obdrží kopie všech stránek, které si vyžádaly, pokusí se zrcadlo nebo sekundární server obnovit relaci zrcadlení. Pokud automatický pokus o opravu stránky opraví podezřelou stránku, stránka je v tabulce suspect_pages označena jako obnovená (event_type = 4).
Pokud zrcadlový nebo sekundární server nedostane stránku, kterou požadoval od hlavního/primárního dodavatele, automatický pokus o opravu stránky selže. Při zrcadlení databáze zůstává zrcadlení relace pozastavena. U skupin dostupnosti Always On zůstává sekundární databáze pozastavena. Pokud je zrcadlení nebo sekundární databáze obnoveno ručně, poškozené stránky budou během synchronizační fáze znovu zasaženy.
Nejlepší postupy vývojářů
Automatická oprava stránek je asynchronní proces, který běží na pozadí. Proto databázová operace, která požaduje nečitelnou stránku, selže a vrátí chybový kód za podmínku, která způsobila selhání. Při vývoji aplikace pro zrcadlanou databázi nebo databázi dostupnosti byste měli zachytávat výjimky pro neúspěšné operace. Pokud je chybový kód SQL Server 823, 824 nebo 829, měli byste operaci zkusit později znovu.
Postup: Zobrazení pokusů o automatickou opravu stránky
Následující dynamická zobrazení pro správu vracejí řádky pro nejnovější pokusy o automatickou opravu stránek pro danou databázi dostupnosti nebo zrcadlenou databázi, maximálně 100 řádků pro každou databázi.
Skupiny s neustálou dostupností:
sys.dm_hadr_auto_page_repair (Transact-SQL)
Vrátí řádek záznamu pro každý pokus o automatickou opravu stránky u jakékoli databáze dostupnosti na replice dostupnosti, kterou hostuje instance serveru pro libovolnou skupinu dostupnosti.
Zrcadlení databází:
sys.dm_db_mirroring_auto_page_repair (Transact-SQL)
Vrací řádek pro každý automatický pokus o opravu stránky v jakékoli zrcadlené databázi na serverové instanci.
Související obsah
- Správa tabulky suspect_pages (SQL Server)
- Co je skupina dostupnosti AlwaysOn?
- Zrcadlení databáze (SQL Server)