Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Az automatikus oldaljavítást az adatbázis tükrözése és a Always On elérhetőségi csoportok támogatják. Miután bizonyos típusú hibák megrontják az oldalt, így olvashatatlanná válik, egy adatbázis-tükröző partner (fő vagy tükör) vagy egy elérhetőségi replika (elsődleges vagy másodlagos) megpróbálja automatikusan helyreállítani az oldalt. Az a partner/replika, amely nem tudja elolvasni az oldalt, új másolatot kér a partnerétől vagy egy másik másolattól. Ha ez a kérés sikerrel jár, az olvashatatlan oldalt az olvasható másolat helyettesíti, és ez általában megoldja a hibát.
Általánosságban elmondható, hogy az adatbázis-tükrözés és a Always On elérhetőségi csoportok hasonló módon kezelik az I/O hibákat. A néhány különbség itt kifejezetten kiemelhető.
Megjegyzés:
Az automatikus oldaljavítás eltér a DBCC javítástól. Az összes adatot automatikus oldaljavítás tartja meg. Ezzel szemben a hibák javítása a DBCC REPAIR_ALLOW_DATA_LOSS beállítással szükségessé teheti egyes oldalak, és ezáltal adatok törlését.
Hibatípusok, amelyek automatikus Page-Repair próbálkozást okoznak
Az adatbázis-tükrözés automatikus oldaljavítása csak az adatfájlban lévő olyan oldalak javítását kísérli meg, amelyeknél egy művelet az alábbi táblázatban felsorolt hibák valamelyike miatt meghiúsult.
| Hiba száma | Leírás | Olyan esetek, amelyek automatikus oldaljavítási kísérletet okoznak |
|---|---|---|
| 823 | A cselekvés csak akkor történik, ha az operációs rendszer ciklikus redundancia-ellenőrzést (CRC) hajtott végre, amely az adatokon meghibásodott. | ERROR_CRC. Ennek a hibának az operációs rendszer értéke 23. |
| 824 | Logikai hibák. | Logikai adathibák, például szakadt írás vagy rossz oldalellenőrző összegzés. |
| 829 | Egy oldalt helyreállítás várakozó állapotként jelöltek. | Összes. |
A legutóbbi 823-as CRC-hibák és 824-es hibák megtekintéséhez tekintse meg az suspect_pages táblát az msdb adatbázisban.
Oldaltípusok, amelyeket nem lehet automatikusan javítani
Az automatikus oldaljavítás nem tudja javítani a következő vezérlőoldalak típusait:
Fájlfejléc oldal (oldalazonosító 0).
9. oldal (az adatbázis boot oldala).
Kiosztási lapok: Globális kiosztási térkép (GAM) lapok, megosztott globális foglalási térkép (SGAM) oldalak és lapterület-szabad terület (PFS) oldalak.
Az I/O hibák kezelése a fő/elsődleges adatbázison
A fő/elsődleges adatbázisban az automatikus oldaljavítást csak akkor próbálják ki, ha az adatbázis SZINKRONIZÁLT állapotban van, és a főügy/elsődleges adatbázis továbbra is naplóadatokat küld az adatbázishoz a tükörnek/másodlagosnak. Az automatikus oldaljavítási kísérlet alapvető műveletsorrendje a következő:
Amikor olvasási hiba jelentkezik egy adatlapon a fő/elsődleges adatbázisban, a főügyvéd/főügyes egy sort helyez be a suspect_pages táblába a megfelelő hibastátuszsal. Az adatbázis tükrözéséhez az igazgató ezután kéri az oldal másolatát a tükörből. Az Always On rendelkezésre állási csoportok esetén az elsődleges replika továbbítja a kérést az összes másodlagos replikának, és az elsőként válaszoló replikától kapja meg az oldalt. A kérés megadja az oldalazonosítót és az LSN-t, amely jelenleg a kitisztított napló végén van. Az oldal helyreállításra vár jelölést kapott. Ez elérhetetlenné teszi az automatikus oldaljavítási kísérlet során. A javítási kísérlet során az oldal elérésére tett kísérletek 829-es hibával (visszaállítás függőben) sikertelenek lesznek.
Az oldalkérés megérkezése után a tükör/másodlagos megvárja, amíg újra elvégezi a naplót a kérésben megadott LSN-ig. Ezután a tükör/másodlagos megpróbálja elérni az adatbázis másolatának oldalát. Ha a lap elérhető, a tükör/másodlagos elküldi a lap másolatát az elsődlegesnek. Ellenkező esetben a tükör-/másodlagos példány hibát ad vissza az elsődlegesnek, és az automatikus oldaljavítási kísérlet meghiúsul.
Az elsődleges folyamat feldolgozza azt a választ, amely az oldal friss másolatát tartalmazza.
Miután az automatikus oldaljavítási kísérlet kijavít egy gyanús oldalt, az oldal a suspect_pages táblában helyreállítottként (event_type = 5) van megjelölve.
Ha a lap I/O-hibája függőben lévő tranzakciókat eredményezett, a lap kijavítása után az elsődleges megpróbálja rendezni ezeket a tranzakciókat.
Az I/O hibák kezelése a tükör/másodlagos adatbázison
A tükör-/másodlagos adatbázisban az adatlapokon előforduló I/O-hibákat az adatbázis-tükrözés és az Always On rendelkezésre állási csoportok általában közel azonos módon kezelik.
Adatbázis tükrözéssel, ha a tükör egy vagy több oldali I/O hibát tapasztal, amikor újra elkészíti a naplóbejegyzést, a tükrözési munkamenet FELFÜGGESZTETT állapotba kerül. Always On elérhetőségi csoportoknál, ha egy másodlagos replika egy vagy több oldali I/O hibát tapasztal egy naplóbejegyzés újraindításakor, a másodlagos adatbázis FELFÜGGESZTETT állapotba kerül. Ezen a ponton a tükör-/másodlagos kiszolgáló beszúr egy sort a suspect_pages táblába a megfelelő hibaállapottal. A tükör/másodlagos ezután kéri az oldal másolatát az elsődleges/fő példánytól.
Az alapító/elsődleges megpróbál hozzáférni az adatbázis másolatán lévő oldalhoz. Ha az oldal elérhető, az elsődleges elküldi az oldal másolatát a tükörnek/másodlagosnak.
Ha a tükör/másodlagos minden kért oldal másolatát megkapja, a tükör/másodlagos megpróbálja folytatni a tükrözési munkamenetet. Ha egy automatikus oldal-helyreállítási kísérlet helyreállít egy gyanús oldalt, az oldalt a suspect_pages táblában helyreállítottként jelölik meg (event_type = 4).
Ha egy tükör/másodlagos példány nem kapja meg azt a lapot, amelyet az elsődleges példánytól kért, az automatikus lapjavítási kísérlet meghiúsul. Az adatbázis tükrözésével a tükrözési munka felfüggesztve marad. A Always On elérhetőségi csoportoknál a másodlagos adatbázis továbbra is felfüggesztve marad. Ha a tükrözési munkamenetet vagy a másodlagos adatbázist manuálisan folytatják, a rendszer a szinkronizálási fázis során ismét eléri a sérült lapokat.
Fejlesztői legjobb gyakorlatok
Az automatikus oldaljavítás egy aszinkron folyamat, amely a háttérben fut. Ezért egy olyan adatbázis-művelet, amely olvashatatlan oldalt kér, megbukik, és visszaadja a hibakódot arra a feltételre, amely a hibát okozta. Amikor egy alkalmazást fejlesztenek tükrözött adatbázishoz vagy elérhetőségi adatbázishoz, akkor el kell fogni a sikertelen műveletek kivételeit. Ha az SQL Server hibakódja 823, 824 vagy 829, később érdemes újra próbálkozni.
Útmutató: Az automatikus lapjavítási kísérletek megtekintése
Az alábbi dinamikus menedzsment nézetek a legfrissebb automatikus oldaljavítási kísérletekhez tartozó sorokat adnak vissza egy adott elérhetőségi adatbázison vagy tükrözött adatbázison, maximum 100 sorral adatbázisonként.
Always On rendelkezésre állási csoportok:
sys.dm_hadr_auto_page_repair (Transact-SQL)
Egy sort ad vissza minden automatikus oldaljavítási kísérlethez egy rendelkezésre állási replikán található rendelkezésre állási adatbázison, amelyet a kiszolgálópéldány bármely rendelkezésre állási csoporthoz üzemeltet.
Adatbázis tükrözése:
sys.dm_db_mirroring_auto_page_repair (Transact-SQL)
A kiszolgálópéldány bármely tükrözött adatbázisán végrehajtott minden automatikus oldaljavítási kísérletről egy sort ad vissza.