Obnovit stránky (SQL Server)
platí pro:SQL Server
Toto téma popisuje, jak obnovit stránky na SQL Serveru pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL. Cílem obnovení stránky je obnovit jednu nebo více poškozených stránek bez obnovení celé databáze. Stránky, které jsou kandidáty na obnovení, jsou obvykle označené jako podezřelé kvůli chybě, ke které dochází při přístupu na stránku. Podezřelé stránky jsou identifikovány v tabulce suspect_pages v databázi msdb.
v tomto tématu
Než začnete:
Obnovení stránek pomocí:
Než začnete
Kdy je obnovení stránky užitečné?
Obnovení stránky je určeno k opravě izolovaných poškozených stránek. Obnovení a obnovení několika jednotlivých stránek může být rychlejší než obnovení souboru, což snižuje množství dat, která jsou během operace obnovení offline. Pokud ale v souboru potřebujete obnovit více než několik stránek, je obecně efektivnější obnovit celý soubor. Pokud například mnoho stránek na zařízení naznačuje hrozící selhání zařízení, zvažte obnovení souboru, případně jeho umístění na jiné místo, a poté opravu zařízení.
Kromě toho ne všechny chyby stránky vyžadují obnovení. K problému může dojít v datech uložených v mezipaměti, jako je sekundární index, který je možné vyřešit přepočítáním dat. Pokud například správce databáze zahodí sekundární index a znovu ho sestaví, poškozená data, i když jsou opravená, nejsou v tabulce suspect_pages označena jako taková.
Limitace a omezení
Obnovení stránky se vztahuje na databáze SQL Serveru, které používají úplné nebo hromadně protokolované modely obnovení. Obnovení stránky je podporováno pouze pro skupiny souborů pro čtení a zápis.
Obnovit lze pouze databázové stránky. Obnovení stránky nelze použít k obnovení následujících položek:
Transakční protokol
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).
Stránka 0 všech datových souborů (spouštěcí stránka souboru)
Stránka 1:9 (spouštěcí stránka databáze)
Fulltextový katalog
Pro databázi, která používá model obnovy s hromadným protokolováním, platí pro obnovení stránky následující dodatečné podmínky:
Zálohování za situace, kdy jsou data skupiny souborů nebo dat stránek offline, je pro hromadně protokolovaná data problematické, protože offline data se v protokolu nezaznamenávají. Jakákoli offline stránka může zabránit zálohování protokolu. V tomto případě zvažte použití nástroje DBCC REPAIR, protože to může způsobit menší ztrátu dat než obnovení do nejnovější zálohy.
Pokud zálohování protokolu hromadně protokolované databáze narazí na špatnou stránku, selže, pokud není zadána funkce WITH CONTINUE_AFTER_ERROR.
Obnovení stránky obecně nefunguje s obnovou typu bulk-logged.
Osvědčeným postupem pro obnovení stránky je nastavit databázi na úplný model obnovení a vyzkoušet zálohu protokolu. Pokud zálohování protokolů funguje, můžete pokračovat v obnovení stránky. Pokud zálohování protokolu selže, musíte buď přijít o práci od předchozího zálohování protokolu, nebo musíte zkusit spustit DBCC s nutností použít možnost REPAIR_ALLOW_DATA_LOSS.
Doporučení
Scénáře obnovení stránky:
Obnovení stránky offline
Všechny edice SQL Serveru podporují obnovení stránek, když je databáze offline. Při obnovení offline stránky je databáze při obnovení poškozených stránek offline. Na konci sekvence obnovení je databáze online.Obnovení online stránky
SQL Server Enterprise Edition podporuje obnovení stránek online, ale používá offline obnovení, pokud je databáze aktuálně offline. Ve většině případů lze poškozenou stránku obnovit, zatímco databáze zůstane online, včetně skupiny souborů, do které se stránka obnovuje. Pokud je primární skupina souborů online, i když je jedna nebo více sekundárních skupin souborů offline, obnovení stránky se obvykle provádí online. Někdy ale může poškozená stránka vyžadovat obnovení offline. Například poškození určitých kritických stránek může bránit spuštění databáze.Varování
Pokud poškozené stránky ukládají důležitá databázová metadata, může při pokusu o obnovu stránky online dojít k selhání požadovaných aktualizací metadat. V tomto případě můžete provést offline obnovení stránky, ale nejprve musíte vytvořit zálohu koncového protokolu (zálohováním transakčního protokolu příkazem RESTORE WITH NORECOVERY).
Obnovení stránky využívá vylepšené hlášení chyb na úrovni stránky (včetně kontroly součtů stránek) a sledování. Stránky, které jsou označeny jako poškozené kvůli kontrolnímu součtu nebo roztrženému zápisu, poškozené stránky, lze obnovit pomocí operace obnovení stránky. Obnoví se pouze explicitně zadané stránky. Každá zadaná stránka se nahradí kopií této stránky ze zadané zálohy dat.
Když obnovíte následné zálohy protokolů, použijí se pouze u databázových souborů, které obsahují alespoň jednu stránku, která se obnovuje. Na poslední úplné nebo rozdílové obnovení je potřeba použít nepřerušený řetěz záloh protokolů, aby se skupina souborů obsahující stránku přeposlala do aktuálního souboru protokolu. Stejně jako při obnovení souboru se roll forward set posouvá jediným průchodem protokolového redo. Aby bylo obnovení stránky úspěšné, musí se obnovené stránky obnovit do stavu konzistentního s databází.
Bezpečnost
Dovolení
Pokud obnovená databáze neexistuje, musí mít uživatel oprávnění CREATE DATABASE, aby mohl provést obnovení. Pokud databáze existuje, oprávnění RESTORE jsou výchozí pro členy správce systému a dbcreator pevné role serveru a vlastník (dbo) databáze (pro možnost FROM DATABASE_SNAPSHOT, databáze vždy existuje).
Oprávnění RESTORE jsou udělena rolím, ve kterých jsou informace o členství vždy snadno dostupné pro server. Vzhledem k tomu, že pevné členství v rolích databáze je možné zkontrolovat pouze v případě, že je databáze přístupná a nepoškozená, což není vždy případ spuštění funkce RESTORE, nemají členové db_owner pevné databázové role oprávnění RESTORE.
Použití aplikace SQL Server Management Studio
Počínaje SQL Serverem 2016 (13.x) sql Server Management Studio podporuje obnovení stránek.
Obnovení stránek
Připojte se k příslušné instanci databázového stroje SQL Serveru v Průzkumníku objektů kliknutím na název serveru a rozbalte strom serveru.
Rozbalte databáze. V závislosti na databázi vyberte uživatelskou databázi nebo rozbalte systémové databázea pak vyberte systémovou databázi.
Klepněte pravým tlačítkem myši na databázi, přejděte na Úkoly, přejděte na Obnovita potom klepněte na tlačítko Stránka, což otevře dialogové okno Obnovení stránky.
Obnovit
Tato část provádí stejnou funkci jako Obnovení do na Obnovit databázi (obecná stránka).Databáze
Určuje databázi, která se má obnovit. Můžete zadat novou databázi nebo vybrat existující databázi z rozevíracího seznamu. Seznam obsahuje všechny databáze na serveru, s výjimkou systémových databází master a tempdb.Varování
Pokud chcete obnovit zálohu chráněnou heslem, musíte použít příkaz RESTORE.
Tail-Log zálohování
Zadejte nebo vyberte název souboru v zálohovacím zařízení, kam bude uložena záloha koncového protokolu pro databázi.sady zálohování
V této části se zobrazí sady záloh, které jsou součástí obnovení.Záhlaví Hodnoty názvu Název zálohovací sady. komponent Zálohovaná komponenta: Databázová, Soubornebo <prázdné> (pro transakční protokoly). typ Typ prováděné zálohy: úplná, rozdílovánebo transakční log. serveru Název instance databázového stroje, která prováděla operaci zálohování. Databáze Název databáze zapojené do operace zálohování. pozice Umístění zálohované sady ve svazku. První LSN Pořadové číslo protokolu (LSN) první transakce v sadě záloh. Prázdné pro zálohy souborů. poslední LSN Pořadové číslo protokolu (LSN) poslední transakce v sadě záloh. Prázdné pro zálohy souborů. kontrolní bod LSN Pořadové číslo protokolu (LSN) posledního kontrolního bodu v době vytvoření zálohy. úplná LSN Pořadové číslo protokolu (LSN) poslední úplné zálohy databáze. Datum zahájení Datum a čas zahájení operace zálohování, které se zobrazí v místním nastavení klienta. datum dokončení Datum a čas dokončení operace zálohování, které se zobrazí v místním nastavení klienta. velikost Velikost zálohované sady v bajtech. uživatelské jméno Jméno uživatele, který provedl operaci zálohování. vypršení platnosti Datum a čas vypršení platnosti sady záloh. Kliknutím na Ověřit zkontrolujte integritu záložních souborů potřebných k provedení operace obnovení stránky.
Chcete-li identifikovat poškozené stránky, vyberte správnou databázi v poli Databáze a klepněte na tlačítko Zkontrolovat stránky databáze. Jedná se o dlouhotrvající operaci.
Varování
Chcete-li obnovit konkrétní stránky, které nejsou poškozené, klikněte na Přidat a zadejte ID souboru a ID stránky, které chcete obnovit.
Mřížka stránek slouží k identifikaci stránek, které se mají obnovit. Zpočátku se tato mřížka naplní ze systémové tabulky suspect_pages. Chcete-li přidat nebo odebrat stránky z mřížky, klikněte na Přidat nebo Odebrat. Další informace naleznete v tématu Správa tabulky suspect_pages (SQL Server).
Mřížka se sadami zálohování zobrazuje seznam sad zálohování ve výchozím plánu obnovení. Volitelně můžete kliknout na Ověřit a ověřit, že zálohy jsou čitelné a že jsou zálohovací sady dokončené, aniž by došlo k jejich obnovení. Další informace naleznete v tématu RESTORE VERIFYONLY (Transact-SQL).
stránky
Chcete-li obnovit stránky uvedené v mřížce stránek, klepněte na tlačítko OK.
Použití Transact-SQL
Pokud chcete zadat stránku v příkazu RESTORE DATABASE, potřebujete ID souboru obsahujícího stránku a ID stránky. Požadovaná syntaxe je následující:
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY
Další informace o parametrech volby PAGE naleznete v tématu RESTORE (ArgumentyTransact-SQL). Další informace o syntaxi RESTORE DATABASE naleznete v tématu RESTORE (Transact-SQL).
Obnovení stránek
Získejte ID poškozených stránek, které se mají obnovit. Kontrolní součet nebo chyba přerušeného zápisu vrací ID stránky a poskytuje informace potřebné pro určení stránek. Pokud chcete vyhledat ID poškozené stránky, použijte některý z následujících zdrojů.
Zdroj ID stránky Téma msdb..suspect_pages Správa tabulky suspect_pages (SQL Server) Protokol chyb Zobrazení protokolu chyb SQL Serveru (SQL Server Management Studio) Stopy událostí Monitorování a reakce na události DBCC DBCC (Transact-SQL) Zprostředkovatel rozhraní WMI Zprostředkovatel WMI pro koncepty serverových událostí Spusťte obnovení stránky pomocí úplné databáze, souboru nebo zálohy skupiny souborů, která obsahuje stránku. V příkazu RESTORE DATABASE použijte klauzuli PAGE k výpisu ID stránek všech stránek, které se mají obnovit.
Použijte nejnovější rozdílové hodnoty .
Použijte následné zálohy protokolů.
Vytvořte novou zálohu protokolu databáze, která obsahuje poslední LSN obnovených stránek, tj. bod, ve kterém se poslední obnovená stránka přepíše do offline režimu. Poslední LSN, který je nastaven jako součást prvního obnovení v sekvenci, je cílový LSN pro opětovné použití. Online posun vpřed souboru, který obsahuje stránku, je možné zastavit na LSN cíle opakování. Informace o aktuálním redo cílovém LSN souboru najdete ve sloupci redo_target_lsn tabulky sys.master_files. Další informace najdete v tématu sys.master_files (Transact-SQL).
Obnovte novou zálohu protokolu. Po použití této nové zálohy protokolu se obnovení stránky dokončí a stránky jsou teď použitelné.
Poznámka
Tato sekvence je podobná sekvenci obnovení souboru. Obnovení stránky a obnovení souborů se ve skutečnosti dají provést v rámci stejné sekvence.
Příklad (Transact-SQL)
Následující příklad obnoví čtyři poškozené stránky souboru B
s NORECOVERY
. Dále se použijí dvě zálohy protokolů s NORECOVERY
, následované zálohováním protokolu tail-log, které se obnoví pomocí RECOVERY
. Tento příklad provede online obnovení. V tomto příkladu je ID souboru B
1
a ID stránky poškozených stránek jsou 57
, 202
, 916
a 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
Viz také
RESTORE (Transact-SQL)
Uplatnit zálohy transakčních protokolů (SQL Server)
Správa tabulky suspect_pages (SQL Server)
zálohování a obnovení databází SQL Serveru