Obnovení zálohy transakčního protokolu (SQL Server)
platí pro:SQL Server
Toto téma popisuje, jak obnovit zálohu transakčního protokolu v SQL Serveru pomocí aplikace SQL Server Management Studio nebo Transact-SQL.
V tomto tématu
Než začnete:
Obnovení zálohy transakčního protokolu pomocí:
Než začnete
Požadavky
Zálohy se musí obnovit v pořadí, ve kterém byly vytvořeny. Než budete moci obnovit konkrétní zálohu transakčního protokolu, musíte nejprve obnovit následující předchozí zálohy bez vrácení nepotvrzených transakcí, to je WITH NORECOVERY:
Úplné zálohování databáze a poslední rozdílové zálohování( pokud existuje) pořízené před zálohováním konkrétního transakčního protokolu. Před vytvořením nejnovější úplné nebo rozdílové zálohy databáze musí databáze používat úplný model obnovení nebo model hromadného obnovení.
Všechny zálohy transakčních protokolů pořízené po úplném zálohování databáze nebo rozdílové zálohování (pokud ho obnovíte) a před zálohováním konkrétního transakčního protokolu. Zálohy protokolů musí být použity v pořadí, ve kterém byly vytvořeny, bez jakýchkoli mezer v řetězu protokolů.
Další informace o zálohách transakčních protokolů najdete v tématu Zálohování transakčních protokolů (SQL Server) a Aplikace záloh transakčních protokolů (SQL Server).
Bezpečnost
Dovolení
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
Varování
Běžný postup obnovení spočívá ve vybrání záloh protokolů v dialogovém okně Obnovit databázi spolu s datovými a rozdílovými zálohami.
Obnovení zálohy transakčního protokolu
Po připojení k příslušné instanci databázového stroje Microsoft SQL Server v Průzkumníku objektů klikněte na název serveru a rozbalte strom serveru.
Rozbalte Databázea v závislosti na databázi vyberte uživatelskou databázi nebo rozbalte systémové databáze a 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 klepněte na transakční protokol, čímž se otevře dialogové okno Restore Transaction Log.
Poznámka
Pokud je transakční protokol neaktivní, možná budete muset nejprve obnovit úplné nebo rozdílové zálohování. Použijte dialogové okno zálohování databáze.
Na stránce Obecné vyberte v seznamu Databáze název databáze. Jsou uvedeny pouze databáze ve stavu obnovení.
Pokud chcete určit zdroj a umístění sad záloh, které se mají obnovit, klikněte na jednu z následujících možností:
Z předchozích databázových záloh
V rozevíracím seznamu vyberte databázi, která se má obnovit. Seznam obsahuje pouze databáze zálohované podle historie zálohování msdb.
ze souboru nebo pásky
Kliknutím na tlačítko Procházet (...) otevřete dialogové okno Vybrat zálohovací zařízení. V poli Typ záložního média vyberte jeden z uvedených typů zařízení. Chcete-li vybrat jedno nebo více zařízení pro média zálohování, klepněte na tlačítko Přidat.
Po přidání zařízení, která chcete přidat do seznamu médií Backup, kliknutím na tlačítko OK se vraťte na stránku Obecné.
V Vyberte zálohy transakčního protokolu pro obnovení mřížky, vyberte zálohy, které chcete obnovit. Tato mřížka obsahuje seznam záloh transakčních protokolů dostupných pro vybranou databázi. Zálohování protokolů je k dispozici pouze v případě, že jeho první LSN je větší než poslední LSN databáze. Zálohy protokolů jsou uvedeny v pořadí pořadových čísel protokolů (LSN), které obsahují, a musí být obnoveny v tomto pořadí.
Následující tabulka uvádí záhlaví sloupců mřížky a popisuje jejich hodnoty.
Záhlaví Hodnota obnovit Zaškrtnuté zaškrtávací políčka označují, že se mají obnovit zálohovací sady. názvu Název zálohovací sady komponent Zálohovaná komponenta: Databázová, Soubornebo <prázdné> (pro transakční protokoly). Databáze Název databáze zapojené do operace zálohování. počáteční datum 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. první LSN Číslo pořadí protokolu první transakce v sadě záloh. Prázdné pro zálohy souborů. poslední LSN Číslo logu poslední transakce v sadě záloh. Prázdné pro zálohy souborů. kontrolní bod LSN Pořadové číslo protokolu posledního kontrolního bodu v okamžiku vytvoření zálohy. LSN úplná Pořadové číslo protokolu nejnovější úplné zálohy databáze. serveru Název instance databázového stroje, která prováděla operaci zálohování. uživatelské jméno Jméno uživatele, který provedl operaci zálohování velikosti Velikost zálohované sady v bajtech pozice Umístění zálohované sady ve svazku vypršení platnosti Datum a čas vypršení platnosti sady záloh Vyberte jednu z následujících možností:
bod v čase
Buď ponechte výchozí (nejnovější možné) nebo vyberte konkrétní datum a čas kliknutím na tlačítko Zobrazit, které otevře dialogové okno Obnovení k určitému bodu v čase.
označená transakce
Obnovte databázi na dříve označenou transakci. Výběrem této možnosti se spustí dialogové okno Vybrat označenou transakci, ve kterém se zobrazí mřížka s označenými transakcemi dostupnými v zálohách vybraných transakčních protokolů.
Ve výchozím nastavení je obnovení do určitého bodu s výjimkou označené transakce. Chcete-li obnovit označenou transakci také, vyberte Zahrnout označenou transakci.
Následující tabulka uvádí záhlaví sloupců mřížky a popisuje jejich hodnoty.
Záhlaví Hodnota <prázdné> Zobrazí zaškrtávací políčko pro výběr značky. transakční značka Název označené transakce určené uživatelem při potvrzení transakce. datum Datum a čas transakce, kdy byla potvrzena. Datum a čas transakce se zobrazují jako zaznamenané v tabulce msdbgmarkhistory, nikoli v datu a čase klientského počítače. popis Popis označené transakce určené uživatelem při potvrzení transakce (pokud existuje). LSN Číslo posloupnosti protokolu označené transakce. Databáze Název databáze, ve které byla označená transakce potvrzena. uživatelské jméno Název uživatele databáze, který potvrdil označenou transakci.
Pokud chcete zobrazit nebo vybrat rozšířené možnosti, klikněte na Možnosti v podokně Vybrat stránku.
V části Možnosti obnovení jsou tyto možnosti:
zachovat nastavení replikace (WITH KEEP_REPLICATION)
Zachová nastavení replikace při obnovování publikované databáze na jiný server, než je server, ve kterém byla databáze vytvořena.
Tato možnost je dostupná pouze s možností Ponechat databázi připravenou k použití vrácením nepotvrzených transakcí... (popsaná dále), což je ekvivalentní obnovení zálohy pomocí možnosti RECOVERY.
Kontrola této možnosti odpovídá použití možnosti KEEP_REPLICATION v příkazu transact-SQLRESTORE.
výzva před obnovením jednotlivých záloh
Před obnovením každé zálohovací sady (po první) tato možnost zobrazí dialogové okno Pokračovat v obnovení, které vás vyzve k označení, zda chcete pokračovat v pořadí obnovení. V tomto dialogovém okně se zobrazí název další sady médií (pokud je k dispozici), název zálohované sady a popis sady záloh.
Tato možnost je užitečná zejména v případě, že je nutné vyměnit pásky pro různé sady médií. Můžete ho například použít, když má server jenom jedno páskové zařízení. Počkejte, až budete připraveni pokračovat, než kliknete na OK.
Kliknutím na Ne ponecháte databázi ve stavu obnovení. Až vám to bude vyhovovat, můžete pokračovat v sekvenci obnovení po dokončení posledního obnovení. Pokud je další zálohování dat nebo rozdílové zálohování, znovu použijte úlohu Obnovit databázi. Pokud je další zálohou zálohování protokolu, použijte úlohu Obnovit transakční protokol.
Omezit přístup k obnovené databázi (WITH RESTRICTED_USER)
Zpřístupní obnovenou databázi pouze členům db_owner, dbcreatornebo správce systému.
Kontrola této možnosti je synonymem pro použití možnosti RESTRICTED_USER v příkazu transact-SQLRESTORE.
U možností Stavu obnovení určete stav databáze po operaci obnovení.
Nechte databázi připravenou k použití vrácením nepotvrzených transakcí. Další transakční protokoly nelze obnovit. (OBNOVENÍ POMOCÍ ZOTAVENÍ)
Obnoví databázi. Tato možnost je ekvivalentní možnosti RECOVERY v příkazu RESTORE jazyka Transact-SQL.
Tuto možnost zvolte jenom v případě, že nemáte žádné soubory protokolu, které chcete obnovit.
Nechte databázi nefunkční a nevracejte zpět nepotvrzené transakce. Je možné obnovit další transakční protokoly. (OBNOVENÍ POMOCÍ NORECOVERY)
Ponechá databázi neobnovenou ve stavu OBNOVENÍ. Tato možnost je ekvivalentní použití možnosti NORECOVERY v příkazutransact-SQL RESTORE.
Když zvolíte tuto možnost, možnost Zachovat nastavení replikace není dostupná.
Důležitý
U zrcadlení nebo sekundární databáze vždy tuto možnost vyberte.
Ponechte databázi v režimu jen pro čtení. Zrušit nepotvrzené transakce, ale uložte jejich akce do souboru, aby efekty obnovení mohly být zvráceny. (OBNOVENÍ S POHOTOVOSTNÍM REŽIMEM)
Ponechá databázi v pohotovostním stavu. Tato možnost je ekvivalentní použití možnosti STANDBY v příkazu Transact-SQLRESTORE.
Volba této možnosti vyžaduje, abyste zadali pohotovostní soubor.
Volitelně můžete zadat název pohotovostního souboru v textovém poli Pohotovostní soubor. Tato možnost se vyžaduje, pokud necháte databázi v režimu jen pro čtení. Můžete vyhledat pohotovostní soubor nebo zadat jeho název cesty do textového pole.
Použití Transact-SQL
Důležitý
V každém příkazu RESTORE doporučujeme vždy explicitně zadat buď WITH NORECOVERY, nebo WITH RECOVERY, abyste eliminovali nejednoznačnost. To je zvlášť důležité při psaní skriptů.
Obnovení zálohy transakčního protokolu
Spusťte příkaz RESTORE LOG pro použití zálohy transakčního protokolu a zadejte:
Název databáze, na kterou se použije transakční protokol.
Zálohovací zařízení, ze kterého se obnoví záloha transakčního protokolu.
Klauzule NORECOVERY.
Základní syntaxe tohoto příkazu je následující:
OBNOVENÍ PROTOKOLU database_name Z <backup_device> POMOCÍ NORECOVERY.
Kde database_name je název databáze a <backup_device>je název zařízení, které obsahuje obnovenou zálohu protokolu.
Opakujte krok 1 pro každou zálohu transakčního protokolu, kterou musíte použít.
Po obnovení poslední zálohy v sekvenci obnovení použijte k obnovení databáze jeden z následujících příkazů:
Obnovte databázi jako součást posledního příkazu RESTORE LOG:
RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GO
Počkejte na obnovení databáze pomocí samostatného příkazu RESTORE DATABASE:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GO
Čekání na obnovení databáze vám umožní ověřit, že jste obnovili všechny potřebné zálohy protokolů. Tento přístup se často doporučuje, když provádíte obnovení k určitému bodu v čase.
Důležitý
Pokud vytváříte zrcadlovou databázi, vynecháte krok obnovení. Zrcadlová databáze musí zůstat ve stavu OBNOVENÍ.
Příklady (Transact-SQL)
Ve výchozím nastavení používá databáze AdventureWorks2022
jednoduchý model obnovení. Následující příklady vyžadují úpravu databáze tak, aby používala úplný model obnovení následujícím způsobem:
ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;
A. Použití zálohy jednoho transakčního protokolu
Následující příklad začíná obnovením databáze AdventureWorks2022
pomocí úplné zálohy databáze, která se nachází na zálohovací zařízení s názvem AdventureWorks2022_1
. Příklad pak použije první zálohu transakčního protokolu, která se nachází na zálohovací zařízení s názvem AdventureWorks2022_log
. Nakonec příklad obnoví databázi.
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorks2022_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2022
FROM AdventureWorks2022_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2022
WITH RECOVERY;
GO
B. Použití více záloh transakčních protokolů
Následující příklad začíná obnovením databáze AdventureWorks2022
pomocí úplné zálohy databáze, která se nachází na zálohovací zařízení s názvem AdventureWorks2022_1
. Příklad pak aplikuje jeden po druhém první tři zálohy transakčních protokolů, které jsou na zálohovacím zařízení nazvaném AdventureWorks2022_log
. Nakonec příklad obnoví databázi.
RESTORE DATABASE AdventureWorks2022
FROM AdventureWorks2022_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2022
FROM AdventureWorks2022_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2022
FROM AdventureWorks2022_log
WITH FILE = 2,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2022
FROM AdventureWorks2022_log
WITH FILE = 3,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2022
WITH RECOVERY;
GO
Související úkoly
obnovení databáze do bodu selhání v rámci úplného modelu obnovení (Transact-SQL)
obnovení databáze SQL Serveru k určitému bodu v čase (úplný model obnovení)
obnovení databáze do označené transakce (SQL Server Management Studio)
Viz také
OBNOVIT (Transact-SQL)
použít zálohy transakčních protokolů (SQL Server)