Udostępnij za pośrednictwem


Odzyskiwanie powiązanych baz danych zawierających oznaczoną transakcję

Dotyczy:programu SQL Server

Ten temat dotyczy tylko baz danych zawierających oznaczone transakcje i korzystających z pełnych lub zbiorczo zarejestrowanych modeli odzyskiwania.

Aby uzyskać informacje o wymaganiach dotyczących przywracania do określonego punktu odzyskiwania, zobacz Przywracanie bazy danych programu SQL Server do punktu w czasie (model pełnego odzyskiwania).

Program SQL Server obsługuje wstawianie nazwanych znaków do dziennika transakcji w celu umożliwienia odzyskiwania do tego określonego znacznika. Znaczniki dziennika są specyficzne dla transakcji i są wstawiane tylko wtedy, gdy powiązana z nimi transakcja zostaje zatwierdzona. W związku z tym znaczniki mogą być powiązane z konkretną pracą i można przywrócić stan do momentu, który zawiera lub wyklucza tę pracę.

Przed wstawieniem nazwanych znaczników do dziennika transakcji należy wziąć pod uwagę następujące kwestie:

  • Ponieważ znaczniki transakcji zużywają miejsce w dzienniku, należy ich używać tylko w przypadku transakcji, które odgrywają znaczącą rolę w strategii odzyskiwania bazy danych.

  • Po zatwierdzeniu oznaczonej transakcji wiersz jest wstawiany do tabeli logmarkhistory w bazie danych msdb.

  • Jeśli oznaczona transakcja obejmuje wiele baz danych na tym samym serwerze bazy danych lub na różnych serwerach, znaczniki muszą być rejestrowane w dziennikach wszystkich baz danych, których dotyczy problem. Aby uzyskać więcej informacji, zobacz Używanie oznaczonych transakcji do odzyskiwania powiązanych baz danych spójnie (model pełnego odzyskiwania).

Notatka

Aby uzyskać informacje na temat oznaczania transakcji, zobacz Używanie oznaczonych transakcji do odzyskiwania powiązanych baz danych spójnie (model pełnego odzyskiwania).

Transact-SQL składnia wstawiania nazwanych znaczników do dziennika transakcji

Aby wstawić znaczniki do dzienników transakcji, użyj instrukcji BEGIN TRANSACTION i klauzuli WITH MARK [description] . Znacznik ma taką samą nazwę jak transakcja. Opcjonalny opis to tekstowy opis znacznika, a nie nazwa znacznika. Na przykład, nazwa zarówno transakcji, jak i znacznika utworzonego w następującej instrukcji BEGIN TRANSACTION, to Tx1:

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

Dziennik transakcji rejestruje nazwę znacznika (nazwę transakcji), opis, bazę danych, użytkownika, informacje o dacie/czasie oraz numer sekwencji dziennika (LSN). Informacje o daty/godziny są używane z nazwą znacznika w celu unikatowego zidentyfikowania znacznika.

Aby uzyskać informacje na temat sposobu wstawiania znacznika do transakcji obejmującej wiele baz danych, zobacz Używanie oznaczonych transakcji do odzyskiwania powiązanych baz danych spójnie (model pełnego odzyskiwania).

Transact-SQL Składnia odzyskiwania do znaku

Kiedy celujesz w oznaczoną transakcję za pomocą instrukcjiRESTORE LOG, można użyć jednej z następujących klauzul, aby zatrzymać się na znaku lub bezpośrednio przed nim:

  • Użyj klauzuli WITH STOPATMARK = "<mark_name>", aby określić, że oznaczona transakcja jest punktem odzyskiwania.

    STOPATMARK przechodzi naprzód do oznaczenia i uwzględnia oznaczoną transakcję w ruchu naprzód.

  • Użyj klauzuli WITH STOPBEFOREMARK = "<mark_name>", aby określić, że rekord dziennika, który znajduje się bezpośrednio przed znacznikiem, jest punktem odzyskiwania.

    STOPBEFOREMARK przesuwa się do znaku i wyklucza transakcję oznaczoną do przodu.

Opcje STOPATMARK i STOPBEFOREMARK obsługują opcjonalną klauzulę AFTER datetime. Gdy jest używana data i godzina, nazwy oznaczeń nie muszą być unikatowe.

Jeśli po data/godzina zostanie pominięta, przewijanie do przodu zatrzymuje się na pierwszym oznaczeniu o określonej nazwie. Jeśli po określeniu data/godzina jest wprowadzony, zatrzymanie przesunięcia następuje przy pierwszym znaczniku, który ma określoną nazwę, dokładnie w lub po data/godzina.

Notatka

Podobnie jak we wszystkich operacjach przywracania do punktu w czasie odzyskiwanie do znaku jest niedozwolone, gdy baza danych przechodzi operacje rejestrowane zbiorczo.

Aby przywrócić do oznaczonej transakcji

przywracanie bazy danych do oznaczonej transakcji (SQL Server Management Studio)

PRZYWRÓĆ (Transact-SQL)

Przygotowywanie kopii zapasowych dziennika

W tym przykładzie odpowiednia strategia tworzenia kopii zapasowych dla tych powiązanych baz danych będzie następująca:

  1. Użyj pełnego modelu odzyskiwania dla obu baz danych.

  2. Utwórz pełną kopię zapasową każdej bazy danych.

    Kopie zapasowe baz danych można wykonywać sekwencyjnie lub jednocześnie.

  3. Przed utworzeniem kopii zapasowej dziennika transakcji oznacz transakcję wykonywaną we wszystkich bazach danych. Aby uzyskać informacje na temat tworzenia oznaczonych transakcji, zobacz Używanie oznaczonych transakcji do odzyskiwania powiązanych baz danych spójnie (model pełnego odzyskiwania).

  4. Utwórz kopię zapasową dziennika transakcji w każdej bazie danych.

Odzyskiwanie bazy danych do oznaczonej transakcji

Aby przywrócić kopię zapasową

  1. Utwórz kopie zapasowe dziennika ogonowego nieuszkodzonych baz danych, jeśli to możliwe.

  2. Przywróć najnowszą pełną kopię zapasową każdej bazy danych.

  3. Zidentyfikuj ostatnio oznaczoną transakcję dostępną we wszystkich kopiach zapasowych dziennika transakcji. Informacje te są przechowywane w tabeli logmarkhistory w bazie danych msdb na każdym serwerze.

  4. Zidentyfikuj kopie zapasowe dziennika dla wszystkich powiązanych baz danych zawierających ten znacznik.

  5. Przywróć każdą kopię zapasową dziennika, zatrzymując się w oznaczonej transakcji.

  6. Odzyskaj każdą bazę danych.

Zobacz też

ROZPOCZNIJ TRANSAKCJĘ (Transact-SQL)
PRZYWRÓĆ (Transact-SQL)
stosowanie kopii zapasowych dziennika transakcji (SQL Server)
Używać Oznaczonych Transakcji do Odzyskiwania Powiązanych Baz Danych Spójnie (Model Pełnego Odzyskiwania)
Przywracanie i odzyskiwanie (SQL Server) — omówienie
Przywracanie bazy danych programu SQL Server na punkt w czasie (pełny model odzyskiwania)
planowanie i wykonywanie sekwencji przywracania (model pełnego odzyskiwania)