Megosztás a következőn keresztül:


Lapok visszaállítása (SQL Server)

A következőkre vonatkozik:SQL Server

Ez a témakör azt ismerteti, hogyan állíthatja vissza a lapokat az SQL Server Management Studióval vagy a Transact-SQL-lel. A lap-visszaállítás célja egy vagy több sérült lap visszaállítása a teljes adatbázis visszaállítása nélkül. A visszaállításra jelölt lapok általában "gyanúsként" lettek megjelölve, mert hiba történt a lap elérésekor. A gyanús oldalakat az msdb adatbázissuspect_pages táblája azonosítja.

ebben a témakörben

Mielőtt hozzákezdene

Mikor hasznos a lap-visszaállítás?

A lap-visszaállítás az izolált sérült lapok javítására szolgál. Néhány egyes lap visszaállítása és helyreállítása gyorsabb lehet, mint egy fájl visszaállítása, ami csökkenti a visszaállítási művelet során offline állapotban lévő adatok mennyiségét. Ha azonban több oldalt is vissza kell állítania egy fájlban, általában hatékonyabb a teljes fájl visszaállítása. Ha például egy eszköz sok oldala függőben lévő eszközhibát jelez, fontolja meg a fájl visszaállítását, esetleg egy másik helyre való visszaállítását és az eszköz javítását.

Ezenkívül nem minden oldalhiba igényel visszaállítást. A gyorsítótárazott adatokban, például egy másodlagos indexben probléma léphet fel, amely az adatok újraszámításával megoldható. Ha például az adatbázis-rendszergazda elvet egy másodlagos indexet, és újraépíti azt, a sérült adatok, bár kijavítva, nem jelennek meg ilyenként a suspect_pages táblában.

Korlátozások és korlátozások

  • A lap-visszaállítás a teljes vagy tömegesen naplózott helyreállítási modelleket használó SQL Server-adatbázisokra vonatkozik. A lap-visszaállítás csak olvasási/írási fájlcsoportok esetén támogatott.

  • Csak az adatbázisoldalak állíthatók vissza. A lap-visszaállítás nem használható a következők visszaállítására:

    • Tranzakciónapló

    • 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.

    • 0. oldal az összes adatfájlból (a fájlindító oldal)

    • 1:9. oldal (az adatbázis rendszerindító oldala)

    • Teljes szöveges katalógus

  • A tömegesen naplózott helyreállítási modellt használó adatbázisok esetében a lap-visszaállítás a következő további feltételekkel rendelkezik:

    • A fájlcsoport- vagy lapadatok offline állapotban történő biztonsági mentése problémás a tömegesen naplózott adatok esetében, mivel az offline adatok nem kerülnek rögzítésre a naplóban. Bármely offline oldal megakadályozhatja a napló biztonsági mentését. Ebben az esetben fontolja meg a DBCC REPAIR használatát, mert ez kevesebb adatvesztést okozhat, mint a legutóbbi biztonsági mentésre való visszaállítás.

    • Ha egy tömegesen naplózott adatbázis naplóinak biztonsági mentése hibás lapra ütközik, az sikertelen lesz, kivéve, ha a WITH CONTINUE_AFTER_ERROR van megadva.

    • A lap visszaállítása általában nem működik a tömegesen naplózott helyreállítással.

      Az oldal-visszaállítás elvégzésének ajánlott eljárása az adatbázis teljes helyreállítási modellre állítása és a napló biztonsági mentésének kipróbálása. Ha a napló biztonsági mentése működik, folytathatja a lap visszaállítását. Ha a napló biztonsági mentése sikertelen, akkor vagy az előző napló biztonsági mentése óta elveszíti a munkáját, vagy meg kell próbálnia a DBCC futtatását a REPAIR_ALLOW_DATA_LOSS beállítással.

Ajánlások

  • Lap-visszaállítási forgatókönyvek:

    Offline oldal visszaállítása
    Az SQL Server összes kiadása támogatja a lapok visszaállítását, ha az adatbázis offline állapotban van. Offline lap-visszaállítás esetén az adatbázis offline állapotban van, miközben a sérült lapok helyreállnak. A visszaállítási folyamat végén az adatbázis online állapotba kerül.

    Online lap visszaállítása
    Az SQL Server Enterprise kiadás támogatja az online lapok visszaállítását, de offline visszaállítást használnak, ha az adatbázis jelenleg offline állapotban van. A legtöbb esetben egy sérült lap visszaállítható, amíg az adatbázis online állapotban marad, beleértve azt a fájlcsoportot is, amelyre a lap visszaállítása folyamatban van. Ha az elsődleges fájlcsoport online állapotban van, még akkor is, ha egy vagy több másodlagos fájlcsoportja offline állapotban van, a lapvisszaállítások általában online állapotban történnek. Előfordulhat azonban, hogy egy sérült lap offline visszaállítást igényel. Bizonyos kritikus lapok sérülése például megakadályozhatja az adatbázis elindítását.

    Figyelmeztetés

    Ha a sérült lapok kritikus adatbázis-metaadatokat tárolnak, előfordulhat, hogy a metaadatok szükséges frissítése sikertelen lehet egy online lap-visszaállítási kísérlet során. Ebben az esetben offline lap-visszaállítást hajthat végre, de először létre kell hoznia egy végső napló biztonsági mentést (a tranzakciónapló mentésével a RESTORE WITH NORECOVERY utasítással).

  • Az oldal-visszaállítás kihasználja a továbbfejlesztett oldalszintű hibajelentést, beleértve az oldalak ellenőrzőösszegeit, és a nyomon követést. Az ellenőrzőösszegzés vagy a szakadt írás miatt sérültként észlelt lapok, például sérült lapok, a lap-visszaállítási művelettel helyreállíthatók. A rendszer csak a kifejezetten megadott lapokat állítja vissza. Minden megadott lap helyébe a megadott adatmásolatból származó lap másolata kerül.

    A későbbi naplók biztonsági mentéseinek visszaállításakor a rendszer csak olyan adatbázisfájlokra alkalmazza őket, amelyek legalább egy helyreállított lapot tartalmaznak. A napló biztonsági mentéseinek töretlen láncát kell alkalmazni az utolsó teljes vagy különbözeti visszaállításra, hogy a lapot tartalmazó fájlcsoportot az aktuális naplófájlba továbbíthassa. A fájl-visszaállításhoz hasonlóan az előre gördülő készlet is egyetlen napló újrajátszási lépéssel halad tovább. Ahhoz, hogy egy lap visszaállítása sikeres legyen, a visszaállított lapokat az adatbázissal konzisztens állapotba kell állítani.

Biztonság

Engedélyek

Ha a visszaállított adatbázis nem létezik, a felhasználónak CREATE DATABASE-engedélyekkel kell rendelkeznie a VISSZAÁLLÍTÁS végrehajtásához. Ha az adatbázis létezik, a RESTORE jogosultságok alapértelmezés szerint azon szerepkörökhöz tartoznak, akik a következő fix szerver szerepkörök tagjai: sysadmin és dbcreator, valamint az adatbázis tulajdonosához (dbo). (A FROM DATABASE_SNAPSHOT lehetőségnél az adatbázis mindig létezik.)

A VISSZAÁLLÍTÁSi engedélyek olyan szerepkörökhöz lesznek adva, amelyekben a tagsági adatok mindig könnyen elérhetők a kiszolgáló számára. Mivel a rögzített adatbázisszerepkör-tagság csak akkor ellenőrizhető, ha az adatbázis elérhető és sértetlen, ami nem mindig történik meg a VISSZAÁLLÍTÁS végrehajtásakor, a db_owner rögzített adatbázis-szerepkör tagjai nem rendelkeznek VISSZAÁLLÍTÁSi engedélyekkel.

Az SQL Server Management Studio használata

Az SQL Server 2016 -tól (13.x) kezdődően az SQL Server Management Studio támogatja a lap-visszaállítást.

Lapok visszaállítása

  1. Csatlakozzon az SQL Server adatbázismotor megfelelő példányához az Object Explorerben a kiszolgáló nevére kattintva bontsa ki a kiszolgálófát.

  2. Nyissa meg Adatbázisok. Az adatbázistól függően válasszon ki egy felhasználói adatbázist, vagy bontsa ki Rendszeradatbázisok, majd válasszon ki egy rendszeradatbázist.

  3. Kattintson a jobb gombbal az adatbázisra, vigye a mutatót a Feladatokfölé, vigye a mutatót a Visszaállításpontra, majd kattintson a Oldalelemre, amely megnyitja a Visszaállítási oldal párbeszédpanelt.

    visszaállítás
    Ez a rész ugyanazt a funkciót hajtja végre, mint a visszaállítás a adatbázis-visszaállítás (általános oldal)részen.

    Adatbázis
    Megadja a visszaállítani kívánt adatbázist. Megadhat egy új adatbázist, vagy kiválaszthat egy meglévő adatbázist a legördülő listából. A lista tartalmazza a kiszolgálón található összes adatbázist, kivéve a rendszeradatbázisokat és tempdb.

    Figyelmeztetés

    Jelszóval védett biztonsági mentés visszaállításához a RESTORE utasítást kell használnia.

    Tail-Log biztonsági mentés
    Adjon meg vagy válasszon ki egy fájlnevet a biztonsági mentési eszköz eszközön, ahol az adatbázishoz tartozó tail log mentés tárolva lesz.

    Mentési készletek
    Ez a szakasz a visszaállításban részt vevő biztonsági mentési csoportokat jeleníti meg.

    Fejléc Értékrend
    név A biztonsági mentés készlet neve.
    összetevő A biztonsági mentési összetevő: Adatbázis, Fájl, vagy <üres> (tranzakciónaplók esetén).
    Típus A biztonsági mentés típusa: Teljes, Diferenciálisvagy Tranzakciónapló.
    Szerver A biztonsági mentési műveletet végrehajtó adatbázismotor-példány neve.
    Adatbázis A biztonsági mentési műveletben részt vevő adatbázis neve.
    pozíció A biztonsági mentési készlet helye a kötetben.
    első LSN- A biztonsági mentési készlet első tranzakciójának naplóütemezési száma (LSN). A fájl biztonsági mentéséhez üres.
    legutóbbi LSN A biztonsági mentési készlet utolsó tranzakciójának naplóütemezési száma (LSN). A fájl biztonsági mentéséhez üres.
    Ellenőrzőpont LSN A legutóbbi ellenőrzőpont naplóütemezési száma (LSN) a biztonsági mentés létrehozásakor.
    Teljes LSN A legutóbbi teljes adatbázis biztonsági mentésének naplóütemezési száma (LSN).
    kezdési dátum A biztonsági mentési művelet megkezdésének dátuma és időpontja az ügyfél területi beállításában jelenik meg.
    befejezési dátum A biztonsági mentési művelet befejezésének dátuma és időpontja az ügyfél területi beállításában jelenik meg.
    Méret A biztonsági mentési csoport mérete bájtban.
    Felhasználónév A biztonsági mentési műveletet végrehajtó felhasználó neve.
    Lejárat A mentési készlet lejárati dátuma és időpontja.

    Kattintson ellenőrzése gombra a lap-visszaállítási művelet végrehajtásához szükséges biztonsági mentési fájlok integritásának ellenőrzéséhez.

  4. A sérült lapok azonosításához kattintson a Adatbázis mezőben a megfelelő adatbázisra, és kattintson Adatbázislapok ellenőrzésegombra. Ez egy hosszú ideig futó művelet.

    Figyelmeztetés

    A nem sérült lapok visszaállításához kattintson a Hozzáadás gombra, majd adja meg a visszaállítandó lapok fájlazonosítóját és lapazonosítóját.

  5. A laprács a visszaállítandó lapok azonosítására szolgál. Ez a rács kezdetben a suspect_pages rendszertáblából van feltöltve. Lapok rácsról való hozzáadásához vagy eltávolításához kattintson a hozzáadása vagy eltávolítása elemre. További információért lásd: A suspect_pages tábla (SQL Server)kezelése.

  6. A Biztonsági mentési csoportok rács az alapértelmezett visszaállítási tervben sorolja fel a biztonsági mentési csoportokat. Ha szeretné, kattintson a Ellenőrzés elemre annak ellenőrzéséhez, hogy a biztonsági másolatok olvashatók-e, és hogy a biztonsági mentési csoportok készek-e, visszaállításuk nélkül. További információ: RESTORE VERIFYONLY (Transact-SQL).

    Lapok

  7. A laprácson felsorolt lapok visszaállításához kattintson az OKgombra.

A Transact-SQL használata

Ha meg szeretne adni egy lapot a RESTORE DATABASE utasításban, szüksége van a lapot tartalmazó fájl fájlazonosítójára és a lap oldalazonosítójára. A szükséges szintaxis a következő:

 RESTORE DATABASE <database_name>  
  
 PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
  
 FROM <backup_device> [ ,... n ]
  
 WITH NORECOVERY

A PAGE beállítás paramétereiről további információt RESTORE argumentumok (Transact-SQL)című témakörben talál. További információ a RESTORE DATABASE szintaxisáról: RESTORE (Transact-SQL).

Lapok visszaállítása

  1. Szerezze be a visszaállítandó sérült lapok lapazonosítóit. Az ellenőrzőösszeg vagy a szakadt írási hiba az oldalazonosítót visszaadja, és biztosítja a lapok azonosításához szükséges információkat. Egy sérült oldal oldalazonosítójának kereséséhez használja az alábbi források bármelyikét.

    Oldalazonosító forrása Téma
    msdb..suspect_pages Suspect_pages tábla (SQL Server) kezelése
    Hibajelentés Az SQL Server hibanaplójának megtekintése (SQL Server Management Studio)
    Eseménykövetések Események figyelése és megválaszolás
    DBCC DBCC (Transact-SQL)
    WMI-szolgáltató WMI-szolgáltató a kiszolgálói eseményekhez – fogalmak
  2. Lap-visszaállítás indítása a lapot tartalmazó teljes adatbázis-, fájl- vagy fájlcsoport-biztonsági mentéssel. A RESTORE DATABASE utasításban a PAGE záradékkal listázhatja az összes visszaállítandó lap lapazonosítóját.

  3. Alkalmazza a legújabb különbségeket.

  4. Alkalmazza a későbbi naplók biztonsági mentéseit.

  5. Hozzon létre egy új napló biztonsági másolatot az adatbázisról, amely tartalmazza a visszaállított lapok utolsó LSN-jét, vagyis azt a pontot, ahol az utolsó visszaállított lap offline állapotba kerül. Az utolsó LSN, amely a sorozat első visszaállításának részeként van beállítva, a redo cél LSN. Az oldalt tartalmazó fájl online előregörgetése megállhat a cél LSN újraküldésénél. A fájl aktuális redo cél LSN-jének megismeréséhez tekintse meg a sys.master_filesredo_target_lsn oszlopát. További információ: sys.master_files (Transact-SQL).

  6. Állítsa vissza az új napló biztonsági mentését. Az új napló biztonsági mentésének alkalmazása után a lap visszaállítása befejeződött, és a lapok most már használhatók.

    Jegyzet

    Ez a sorozat hasonló a fájl-visszaállítási sorozathoz. Valójában a lap-visszaállítás és a fájl-visszaállítások ugyanazon sorozat részeként is elvégezhetők.

Példa (Transact-SQL)

Az alábbi példa négy sérült fájllapot állít vissza BNORECOVERY. Ezután két napló biztonsági mentést alkalmaznak NORECOVERY-val, majd a végső napló biztonsági mentést, amelyet visszaállítanak RECOVERY-gyel. Ez a példa online visszaállítást hajt végre. A példában a fájlazonosító B1, a sérült lapok lapazonosítói pedig 57, 202, 916és 1016.

RESTORE DATABASE [<database>] PAGE='1:57, 1:202, 1:916, 1:1016'  
   FROM DISK = '<file_backup_of_file_B>'
   WITH NORECOVERY;  
RESTORE LOG [<database>] FROM [<log_backup>]
   WITH NORECOVERY;  
RESTORE LOG [<database>] FROM [<log_backup>]
   WITH NORECOVERY;   
BACKUP LOG [<database>] TO [<new_log_backup>];
RESTORE LOG [<database>] FROM [<new_log_backup>] WITH RECOVERY;  
GO

Lásd még:

VISSZAÁLLÍTÁS (Transact-SQL)
Tranzakciónapló biztonsági mentések alkalmazása (SQL Server)
Suspect_pages tábla (SQL Server) kezelése
SQL Server-adatbázisok biztonsági mentése és visszaállítása