Sdílet prostřednictvím


Obnovení souvisejících databází obsahujících označenou transakci

platí pro:SQL Server

Toto téma je relevantní pouze pro databáze, které obsahují označené transakce a které používají úplné nebo hromadně protokolované modely obnovení.

Informace o požadavcích na obnovení do konkrétního bodu obnovení najdete v tématu Obnovení databáze SQL Serveru k určitému bodu v čase (úplný model obnovení).

SQL Server podporuje vkládání pojmenovaných značek do transakčního protokolu, aby bylo možné obnovit konkrétní značku. Značky logu jsou specifické pro transakci a jsou vloženy pouze v případě, že je jejich přidružená transakce potvrzena. V důsledku toho mohou být označení svázána s konkrétní prací a můžete se vrátit k bodu, který tuto práci zahrnuje nebo vylučuje.

Než do transakčního protokolu vložíte pojmenované značky, zvažte následující:

Transact-SQL Syntaxe pro vkládání pojmenovaných značek do transakčního protokolu

Chcete-li vložit značky do transakčních logů, použijte příkaz BEGIN TRANSACTION a klauzuli WITH MARK [popis]. Značka je pojmenována stejně jako transakce. Volitelný popis je textový popis značky, nikoli název značky. Například název transakce i značky vytvořené v následujícím příkazu BEGIN TRANSACTION je Tx1:

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'    

Transakční protokol zaznamenává název značky (název transakce), popis, databázi, uživatele, informace o datetime a pořadové číslo protokolu (LSN). Informace o datetime se používají spolu s názvem značky pro její jedinečnou identifikaci.

Informace o tom, jak vložit značku do transakce, která zahrnuje více databází, naleznete v tématu Použití označených transakcí k obnovení souvisejících databází konzistentně (úplný model obnovení).

Transact-SQL syntaxe pro návrat k značce

Když se zaměříte na označenou transakci pomocí příkazuRESTORE LOG, můžete se zastavit přímo na nebo těsně před značkou pomocí jedné z následujících možností:

  • Pomocí klauzule WITH STOPATMARK = '<mark_name>' určete, že označenou transakcí je bod obnovení.

    FUNKCE STOPATMARK se přepojí na značku a zahrnuje označenou transakci v roll forwardu.

  • Pomocí klauzule WITH STOPBEFOREMARK = '<mark_name>' určete, že záznam protokolu, který je bezprostředně před značkou, je bodem obnovení.

    FUNKCE STOPBEFOREMARK se posune k značce a vyloučí označenou transakci z posunu vpřed.

Možnosti STOPATMARK a STOPBEFOREMARK podporují volitelnou klauzuli AFTER datetime. Při použití datum a čas nemusí být názvy označení jedinečné.

Pokud je vynecháno "AFTER" datum a čas, posun vpřed se zastaví na první značce, která má zadaný název. Pokud je PO zadání datum a čas, posun vpřed se zastaví na první značce, která má zadaný název, přesně na nebo za datum a čas.

Poznámka

Stejně jako u všech operací obnovení k určitému bodu v čase je obnovení na značku zakázáno, když databáze prochází operacemi, které jsou hromadně protokolovány.

Obnovit označenou transakci

obnovení databáze do označené transakce (SQL Server Management Studio)

RESTORE (Transact-SQL)

Příprava záloh protokolů

V tomto příkladu by vhodná strategie zálohování pro tyto související databáze byla následující:

  1. Pro obě databáze použijte úplný model obnovení.

  2. Vytvořte úplnou zálohu každé databáze.

    Databáze je možné zálohovat postupně nebo současně.

  3. Před zálohováním transakčního protokolu označte transakci, která se spouští ve všech databázích. Informace o tom, jak vytvořit označené transakce, naleznete v tématu Použití označených transakcí k obnovení souvisejících databází konzistentně (úplný model obnovení).

  4. Zálohujte transakční protokol v každé databázi.

Obnovení databáze na označenou transakci

Obnovení zálohy

  1. Pokud je to možné, vytvořte zálohy protokolu tail-log nepoškozených databází.

  2. Obnovte nejnovější úplnou zálohu databáze každé databáze.

  3. Identifikujte poslední označenou transakci, která je k dispozici ve všech zálohách transakčních protokolů. Tyto informace jsou uloženy v tabulce logmarkhistory v databázi msdb na každém serveru.

  4. Identifikujte zálohy protokolů pro všechny související databáze, které obsahují tuto značku.

  5. Obnovte každou zálohu protokolu a zastavte se u označené transakce.

  6. Obnovte každou databázi.

Viz také

ZAČÁTEK TRANSAKCE (Transact-SQL)
RESTORE (Transact-SQL)
použít zálohy transakčních protokolů (SQL Server)
použít označené transakce k obnovení souvisejících databází konzistentně (úplný model obnovení)
– přehled obnovení a zotavení (SQL Server)
obnovení databáze SQL Serveru k určitému bodu v čase (úplný model obnovení)
plánování a provádění sekvencí obnovení (úplný model obnovení)