Udostępnij za pośrednictwem


Przywracanie kopii zapasowej dziennika transakcji (SQL Server)

Dotyczy:programu SQL Server

W tym temacie opisano sposób przywracania kopii zapasowej dziennika transakcji w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL.

w tym temacie

Przed rozpoczęciem

Warunki wstępne

  • Kopie zapasowe muszą zostać przywrócone w kolejności, w której zostały utworzone. Aby móc przywrócić określoną kopię zapasową dziennika transakcji, należy najpierw przywrócić poprzednie kopie zapasowe bez wycofywania niezatwierdzonych transakcji, czyli używając opcji NORECOVERY.

    • Pełna kopia zapasowa bazy danych i ostatnia różnicowa kopia zapasowa, jeśli istnieje, wykonana przed określoną kopią zapasową dziennika transakcji. Przed utworzeniem najnowszej pełnej lub różnicowej kopii zapasowej bazy danych baza danych musiała używać modelu pełnego odzyskiwania lub modelu odzyskiwania z rejestrowaniem zbiorczym.

    • Wszystkie kopie zapasowe dziennika transakcji wykonane po pełnej kopii zapasowej bazy danych lub różnicowej kopii zapasowej (jeśli zostanie przywrócona) i przed określoną kopią zapasową dziennika transakcji. Kopie zapasowe dzienników muszą być stosowane w sekwencji, w której zostały utworzone, bez żadnych przerw w łańcuchu dzienników.

      Aby uzyskać więcej informacji na temat kopii zapasowych dziennika transakcji, zobacz Kopie zapasowe dziennika transakcji (SQL Server) oraz Wprowadzenie kopii zapasowych dziennika transakcji (SQL Server).

Bezpieczeństwo

Uprawnienia

Uprawnienia RESTORE są przekazywane do ról, w których informacje o członkostwie są zawsze łatwo dostępne dla serwera. Ponieważ stałe członkostwo w roli bazy danych można sprawdzić tylko wtedy, gdy baza danych jest dostępna i nieuszkodzona, co nie zawsze jest możliwe w przypadku wykonywania procesu RESTORE, członkowie urzędowej roli bazy danych db_owner nie mają uprawnień RESTORE.

Korzystanie z programu SQL Server Management Studio

Ostrzeżenie

Normalnym procesem przywracania jest wybranie kopii zapasowych dziennika w oknie dialogowym Przywracanie bazy danych wraz z danymi i różnicowymi kopiami zapasowymi.

Aby przywrócić kopię zapasową dziennika transakcji

  1. Po nawiązaniu połączenia z odpowiednim wystąpieniem silnika bazy danych programu Microsoft SQL Server, w Eksploratorze obiektów kliknij nazwę serwera, aby rozwinąć strukturę serwera.

  2. Rozwiń Bazy danych, a w zależności od bazy danych, wybierz bazę danych użytkownika lub rozwiń Systemowe bazy danych i wybierz systemową bazę danych.

  3. Kliknij prawym przyciskiem myszy bazę danych, wskaż polecenie Tasks, wskaż polecenie Restore, a następnie kliknij przycisk Transaction Log, co spowoduje otwarcie okna dialogowego Przywróć dziennik transakcji.

    Notatka

    Jeśli dziennik transakcji jest wyszarzony, może być konieczne najpierw przywrócenie pełnej lub różnicowej kopii zapasowej. Użyj okna dialogowego tworzenia kopii zapasowej Database.

  4. Na stronie Ogólne w polu listy Database wybierz nazwę bazy danych. Wyświetlane są tylko bazy danych w stanie przywracania.

  5. Aby określić źródło i lokalizację zestawów kopii zapasowych do przywrócenia, kliknij jedną z następujących opcji:

    • Z poprzednich kopii zapasowych bazy danych

      Wybierz bazę danych do przywrócenia z listy rozwijanej. Lista zawiera tylko bazy danych, których kopia zapasowa została utworzona zgodnie z historią kopii zapasowych w msdb.

    • z pliku lub taśmy

      Kliknij przycisk przeglądaj (...), aby otworzyć okno dialogowe Wybieranie urządzeń kopii zapasowych. W polu Nośnik kopii zapasowej wybierz jeden z wymienionych typów urządzeń. Aby wybrać co najmniej jedno urządzenie dla nośnika kopii zapasowej, kliknij przycisk Dodaj.

      Po dodaniu urządzeń do listy nośnika kopii zapasowej kliknij przycisk OK, aby powrócić do strony Ogólne.

  6. W Wybierz kopie zapasowe dziennika transakcji, aby przywrócić siatkę, wybierz kopie zapasowe do przywrócenia. Ta siatka zawiera listę kopii zapasowych dziennika transakcji dostępnych dla wybranej bazy danych. Kopia zapasowa dziennika jest dostępna tylko wtedy, gdy jego Pierwsze LSN jest większe niż Ostatnie LSN bazy danych. Kopie zapasowe dzienników są wymienione w kolejności numerów sekwencji dzienników (LSN), które zawierają, i muszą zostać przywrócone w tej kolejności.

    W poniższej tabeli wymieniono nagłówki kolumn siatki i opisano ich wartości.

    Nagłówek Wartość
    Przywróć Zaznaczone pola wyboru wskazują zestawy kopii zapasowych do przywrócenia.
    nazwa Nazwa zestawu kopii zapasowych.
    elementu Składnik kopii zapasowej: Database, Filelub <puste> (w przypadku dzienników transakcji).
    Baza danych Nazwa bazy danych zaangażowanej w operację tworzenia kopii zapasowej.
    data rozpoczęcia Data i godzina rozpoczęcia operacji tworzenia kopii zapasowej w regionalnym ustawieniu klienta.
    data zakończenia Data i godzina zakończenia operacji tworzenia kopii zapasowej przedstawione w regionalnym ustawieniu klienta.
    Pierwszy LSN Numer sekwencji dziennika pierwszej transakcji w zestawie kopii zapasowych. Pole na kopie zapasowe plików.
    Ostatnie LSN Numer sekwencji dziennika ostatniej transakcji w zestawie kopii zapasowych. Puste miejsce na kopie zapasowe plików.
    Punkt Kontrolny LSN Numer sekwencji dziennika ostatniego punktu kontrolnego podczas tworzenia kopii zapasowej.
    Pełny LSN Numer sekwencji dziennika logu najnowszej pełnej kopii zapasowej bazy danych.
    Server Nazwa wystąpienia silnika bazy danych, które wykonało operację tworzenia kopii zapasowej.
    nazwa użytkownika Nazwa użytkownika, który wykonał operację tworzenia kopii zapasowej.
    rozmiar Rozmiar zestawu kopii zapasowych w bajtach.
    położenie Położenie zestawu kopii zapasowych w woluminie.
    wygasanie Data i godzina wygaśnięcia zestawu kopii zapasowych.
  7. Wybierz jedną z następujących pozycji:

    • Punkt w czasie

      Zachowaj wartość domyślną (Najnowsze możliwe) lub wybierz określoną datę i godzinę, klikając przycisk przeglądania, co otwiera okno dialogowe Przywracanie do punktu w czasie.

    • : oznaczona transakcja

      Przywróć bazę danych do wcześniej oznaczonej transakcji. Wybranie tej opcji powoduje uruchomienie okna dialogowego Wybierz oznaczoną transakcję, w którym zostanie wyświetlona siatka zawierająca listę oznaczonych transakcji dostępnych w wybranych kopiach zapasowych dziennika transakcji.

      Domyślnie przywracanie odbywa się do oznaczonej transakcji, ale jej nie obejmuje. Aby również przywrócić oznaczoną transakcję, wybierz Uwzględnij oznaczoną transakcję.

      W poniższej tabeli wymieniono nagłówki kolumn siatki i opisano ich wartości.

      Nagłówek Wartość
      <puste> Wyświetla pole wyboru do zaznaczenia opcji.
      Mark transakcji Nazwa oznaczonej transakcji określonej przez użytkownika, gdy transakcja została zatwierdzona.
      Data Data i godzina transakcji, kiedy została zatwierdzona. Data i godzina transakcji są wyświetlane jako zarejestrowane w tabeli msdbgmarkhistory, a nie w dacie i godzinie komputera klienckiego.
      Opis Opis oznaczonej transakcji określonej przez użytkownika, gdy transakcja została zatwierdzona (jeśli istnieje).
      LSN Numer sekwencji dziennika oznaczonej transakcji.
      Baza danych Nazwa bazy danych, w której zatwierdzono oznaczoną transakcję.
      nazwa użytkownika Nazwa użytkownika bazy danych, który zadeklarował oznaczoną transakcję.
  8. Aby wyświetlić lub wybrać opcje zaawansowane, kliknij pozycję Opcje w okienku Wybierz stronę.

  9. W sekcji Opcje przywracania dostępne są następujące opcje:

    • Zachowaj ustawienia replikacji (WITH KEEP_REPLICATION)

      Zachowuje ustawienia replikacji podczas przywracania opublikowanej bazy danych na serwer inny niż serwer, na którym została utworzona baza danych.

      Ta opcja jest dostępna tylko z opcją Pozostawia bazę danych gotową do użycia poprzez wycofanie niezatwierdzonych transakcji... (opisanej później), która jest równoważna z przywracaniem kopii zapasowej przy użyciu opcji RECOVERY.

      Sprawdzanie tej opcji jest równoważne użyciu opcji KEEP_REPLICATION w instrukcjiRESTORE języka Transact-SQL RESTORE.

    • monituj przed przywróceniem każdej kopii zapasowej

      Przed przywróceniem każdego zestawu kopii zapasowych (po pierwszym) ta opcja powoduje wyświetlenie okna dialogowego Kontynuuj przywracanie, które prosi o wskazanie, czy chcesz kontynuować sekwencję przywracania. W tym oknie dialogowym zostanie wyświetlona nazwa następnego zestawu multimediów (jeśli jest dostępna), nazwa zestawu kopii zapasowych i opis zestawu kopii zapasowych.

      Ta opcja jest szczególnie przydatna, gdy trzeba zamienić taśmy dla różnych zestawów multimediów. Można go na przykład użyć, gdy serwer ma tylko jedno urządzenie taśmowe. Poczekaj, aż będziesz gotowy do kontynuowania, zanim klikniesz OK.

      Kliknięcie Nie pozostawia bazę danych w stanie przywracania. W dogodnym dla ciebie momencie, możesz kontynuować sekwencję przywracania po zakończeniu ostatniego przywracania. Jeśli następna kopia zapasowa jest kopią zapasową danych lub różnicową, ponownie użyj zadania Przywróć bazę danych. Jeśli następna kopia zapasowa jest kopią zapasową dziennika, użyj zadania Przywróć dziennik transakcji.

    • Ogranicz dostęp do przywróconej bazy danych (WITH RESTRICTED_USER)

      Udostępnia przywróconą bazę danych tylko członkom db_owner, dbcreatorlub sysadmin.

      Zaznaczenie tej opcji jest równoznaczne z użyciem opcji RESTRICTED_USER w instrukcjiRESTORE języka Transact-SQL.

  10. W przypadku opcji dotyczących stanu odzyskiwania określ stan bazy danych po operacji przywracania.

    • Pozostaw bazę danych gotową do użycia przez wycofywanie niezatwierdzonych transakcji. Nie można przywrócić dodatkowych dzienników transakcji. (PRZYWRACANIE ZA POMOCĄ ODZYSKIWANIA)

      Odzyskuje bazę danych. Ta opcja jest odpowiednikiem opcji RECOVERY w instrukcji RESTOREjęzyka Transact-SQL.

      Wybierz tę opcję tylko wtedy, gdy nie masz plików dziennika, które chcesz przywrócić.

    • Pozostaw bazę danych nieoperacyjną i nie wycofaj niezatwierdzonych transakcji. Można przywrócić dodatkowe dzienniki transakcji. (PRZYWRACANIE Z NORECOVERY)

      Pozostawia bazę danych nieodzyskaną, w stanie PRZYWRACANIE. Ta opcja jest równoważna użyciu opcji NORECOVERY w instrukcji RESTOREjęzyka Transact-SQL.

      Po wybraniu tej opcji opcja Zachowaj ustawienia replikacji jest niedostępna.

      Ważny

      W przypadku lustrzanej lub pomocniczej bazy danych zawsze wybierz tę opcję.

    • Pozostaw bazę danych w trybie tylko do odczytu. Cofnij niezatwierdzone transakcje, ale zapisz akcje cofania w pliku, aby efekty odzyskiwania mogły zostać odwrócone. (PRZYWRACANIE Z FUNKCJĄ WSTRZYMANIA)

      Pozostawia bazę danych w stanie oczekiwania. Ta opcja jest równoważna użyciu opcji STANDBY w instrukcjiRESTORE języka Transact-SQL RESTORE.

      Wybranie tej opcji wymaga określenia pliku rezerwowego.

  11. Opcjonalnie określ nazwę pliku rezerwowego w polu tekstowym Plik rezerwowy. Ta opcja jest wymagana, jeśli pozostawisz bazę danych w trybie tylko do odczytu. Możesz wyszukać plik rezerwowy lub wpisać jego nazwę ścieżki w polu tekstowym.

Korzystanie z Transact-SQL

Ważny

Zalecamy, aby zawsze dokładnie określić opcję WITH NORECOVERY lub WITH RECOVERY w każdej instrukcji RESTORE w celu wyeliminowania niejednoznaczności. Jest to szczególnie ważne podczas pisania skryptów.

Aby przywrócić kopię zapasową dziennika transakcji

  1. Wykonaj instrukcję RESTORE LOG, aby zastosować kopię zapasową dziennika transakcji, określając:

    • Nazwa bazy danych, do której zostanie zastosowany dziennik transakcji.

    • Urządzenie kopii zapasowej, z którego zostanie przywrócona kopia zapasowa dziennika transakcji.

    • Klauzula NORECOVERY.

    Podstawowa składnia dla tej instrukcji jest następująca:

    PRZYWRÓĆ LOG DATABASE_NAME Z <BACKUP_DEVICE> Z OPCJĄ NORECOVERY.

    Gdzie database_name jest nazwą bazy danych, a <backup_device>jest nazwą urządzenia zawierającego przywracaną kopię zapasową dziennika.

  2. Powtórz krok 1 dla każdej kopii zapasowej dziennika transakcji, którą należy zastosować.

  3. Po przywróceniu ostatniej kopii zapasowej w sekwencji przywracania, aby odzyskać bazę danych, użyj jednej z następujących instrukcji:

    • Odzyskaj bazę danych w ramach ostatniej instrukcji RESTORE LOG:

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;  
      GO  
      
    • Zaczekaj na odzyskanie bazy danych przy użyciu oddzielnej instrukcji RESTORE DATABASE:

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;   
      RESTORE DATABASE <database_name> WITH RECOVERY;  
      GO  
      

      Oczekiwanie na odzyskanie bazy danych daje możliwość sprawdzenia, czy przywrócono wszystkie niezbędne kopie zapasowe dziennika. Takie podejście jest często zalecane w przypadku wykonywania przywracania stanu na konkretny moment.

    Ważny

    Jeśli tworzysz bazę danych lustrzanych, pomiń krok odzyskiwania. Baza lustrzana musi pozostać w stanie PRZYWRACANIE.

Przykłady (Transact-SQL)

Domyślnie baza danych AdventureWorks2022 używa prostego modelu odzyskiwania. Następujące przykłady wymagają zmodyfikowania bazy danych w celu użycia pełnego modelu odzyskiwania w następujący sposób:

ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  

A. Stosowanie pojedynczej kopii zapasowej dziennika transakcji

Poniższy przykład rozpoczyna się od przywrócenia bazy danych AdventureWorks2022 przy użyciu pełnej kopii zapasowej bazy danych znajdującej się na urządzeniu kopii zapasowej o nazwie AdventureWorks2022_1. Następnie przykład stosuje pierwszą kopię zapasową dziennika transakcji, która znajduje się na urządzeniu kopii zapasowej o nazwie AdventureWorks2022_log. Na koniec przykład odzyskuje bazę danych.

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. Stosowanie wielu kopii zapasowych dziennika transakcji

Poniższy przykład rozpoczyna się od przywrócenia bazy danych AdventureWorks2022 przy użyciu pełnej kopii zapasowej bazy danych znajdującej się na urządzeniu kopii zapasowej o nazwie AdventureWorks2022_1. W tym przykładzie stosuje się jedną po jednej, trzy pierwsze kopie zapasowe dziennika transakcji, które znajdują się na urządzeniu kopii zapasowej o nazwie AdventureWorks2022_log. Na koniec przykład odzyskuje bazę danych.

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  

Powiązane zadania

Zobacz też

PRZYWRÓĆ (Transact-SQL)
stosowanie kopii zapasowych dziennika transakcji (SQL Server)