Odzyskiwanie do numeru sekwencyjnego dziennika (SQL Server)

Dotyczy:SQL Server

Ten temat dotyczy tylko baz danych korzystających z pełnych lub rejestrowanych zbiorczo modeli odzyskiwania.

Aby zdefiniować punkt odzyskiwania dla operacji przywracania, można użyć numeru sekwencji dziennika (LSN). Jest to jednak wyspecjalizowana funkcja przeznaczona dla dostawców narzędzi i jest mało prawdopodobne, aby być ogólnie przydatna.

Omówienie numerów sekwencji dzienników

Numery LSN są używane wewnętrznie w trakcie sekwencji RESTORE, aby śledzić punkt w czasie, do którego przywrócono dane. Po przywróceniu kopii zapasowej dane są przywracane do sieci LSN odpowiadającej punktowi w czasie, w którym utworzono kopię zapasową. Różnicowe kopie zapasowe i kopie zapasowe dzienników przyczyniają się do przesunięcia przywróconej bazy danych do późniejszego punktu w czasie, co odpowiada wyższemu LSN. Aby uzyskać więcej informacji na temat sieci LSN, zobacz Sql Server Transaction Log Architecture and Management Guide (Architektura dziennika transakcji programu SQL Server i przewodnik zarządzania).

Uwaga / Notatka

LSN to wartości typu danych numeric(25,0). Operacje arytmetyczne (na przykład dodawanie lub odejmowanie) nie są istotne i nie mogą być używane z sieciami LSN.

Wyświetlanie LSN używanych przez tworzenie kopii zapasowej i przywracanie

LSN rekordu dziennika, w którym wystąpiły zdarzenia tworzenia kopii zapasowej i przywracania, można wyświetlić przy użyciu jednego lub więcej spośród poniższych elementów:

Uwaga / Notatka

LSNy pojawiają się również w niektórych komunikatach dziennika błędów.

Transact-SQL Składnia przywracania do LSN

Używając instrukcji RESTORE, można zatrzymać się na pozycji LSN lub bezpośrednio przed nią, w następujący sposób:

  • Użyj klauzuli WITH STOPATMARK ='lsn:<lsn_number>', gdzie lsn:<lsnNumber> jest ciągiem określającym, że rekord dziennika zawierający określony LSN jest punktem odzyskiwania.

    STOPATMARK przesuwa się do przodu do LSN i włącza ten zapis dziennika do przesuwania do przodu.

  • Użyj klauzuli WITH STOPBEFOREMARK ='lsn:<lsn_number>', gdzie lsn:<lsnNumber> jest ciągiem określającym, że rekord dziennika bezpośrednio przed rekordem dziennika zawierającym określony numer LSN jest punktem odzyskiwania.

    STOPBEFOREMARK jest przerzucany do sieci LSN i wyklucza ten rekord dziennika z rzutowania do przodu.

Zazwyczaj wybrana jest określona transakcja, która ma zostać uwzględniona lub wykluczona. Chociaż nie jest to wymagane, w praktyce określony rekord dziennika jest rekordem zatwierdzenia transakcji.

Przykłady

W poniższym przykładzie przyjęto założenie, że baza danych AdventureWorks została zmieniona, aby korzystała z pełnego modelu odzyskiwania.

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'   
WITH STOPATMARK = 'lsn:15000000040000037'  
GO  

Powiązane zadania