Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Przywracanie różnicowej kopii zapasowej bazy danych (SQL Server)

Dotyczy:programu SQL Server

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

w tym temacie

Przed rozpoczęciem

Ograniczenia i ograniczenia

  • Funkcja RESTORE nie jest dozwolona w jawnej lub niejawnej transakcji.

  • Nie można przywrócić kopii zapasowych utworzonych przez najnowszą wersję programu SQL Server we wcześniejszych wersjach programu SQL Server.

  • W programie SQL Server można przywrócić bazę danych użytkownika z kopii zapasowej bazy danych utworzonej przy użyciu programu SQL Server 2005 (9.x) lub nowszej wersji.

Warunki wstępne

  • W ramach pełnego lub zarejestrowanego zbiorczo modelu odzyskiwania przed przywróceniem bazy danych należy utworzyć kopię zapasową aktywnego dziennika transakcji (nazywanego ogonem dziennika). Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej dziennika transakcji (SQL Server).

Bezpieczeństwo

Uprawnienia

Jeśli przywracana baza danych nie istnieje, użytkownik musi mieć uprawnienia CREATE DATABASE, aby móc wykonać funkcję RESTORE. Jeśli baza danych istnieje, uprawnienia RESTORE są domyślne dla członków stałych ról serwera sysadmin i dbcreator, oraz właściciela (dbo) bazy danych (dla opcji FROM DATABASE_SNAPSHOT baza danych zawsze istnieje).

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 ma miejsce podczas wykonywania operacji RESTORE, członkowie stałej roli bazy danych db_owner nie mają uprawnień RESTORE.

Korzystanie z programu SQL Server Management Studio

Aby przywrócić różnicową kopię zapasową bazy danych

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

  2. Rozwiń bazy danych . W zależności od bazy danych wybierz bazę danych użytkownika lub rozwiń Bazy danych systemowych, a następnie wybierz systemową bazę danych.

  3. Kliknij prawym przyciskiem myszy bazę danych, wskaż opcję Tasks, wskaż opcję Restore, a następnie kliknij opcję Database.

  4. Na stronie Ogólne użyj sekcji Źródło, aby określić źródło i lokalizację zestawów kopii zapasowych do przywrócenia. Wybierz jedną z następujących opcji:

    • Baza danych

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

    Uwaga

    Jeśli kopia zapasowa zostanie pobrana z innego serwera, serwer docelowy nie będzie miał informacji o historii kopii zapasowych dla określonej bazy danych. W takim przypadku wybierz pozycję Urządzenie, aby ręcznie określić plik lub urządzenie do przywrócenia.

    • Urządzenie

      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.

      W polu listy Źródło: Urządzenie: baza danych wybierz nazwę bazy danych, która ma zostać przywrócona.

      Uwaga Ta lista jest dostępna tylko po wybraniu urządzenia. Dostępne będą tylko bazy danych z kopiami zapasowymi na wybranym urządzeniu.

  5. W sekcji Destination pole Database jest automatycznie wypełniane nazwą bazy danych do przywrócenia. Aby zmienić nazwę bazy danych, wprowadź nową nazwę w polu Database.

    Uwaga

    Aby zatrzymać przywracanie w określonym punkcie w czasie, kliknij Oś czasu, aby uzyskać dostęp do okna dialogowego Oś czasu kopii zapasowej. Aby uzyskać pomoc dotyczącą zatrzymywania przywracania bazy danych w określonym punkcie w czasie, zobacz Przywracanie bazy danych programu SQL Server do punktu w czasie (model pełnego odzyskiwania).

  6. W siatce zestawów kopii zapasowych do przywrócenia wybierz kopie zapasowe, które chcesz przywrócić, uwzględniając różnicową kopię zapasową.

    Aby uzyskać informacje o kolumnach w zestawach kopii zapasowych w celu przywrócenia siatki, zobacz Restore Database (Strona ogólna).

  7. Na stronie Opcje w panelu Opcje przywracania można wybrać dowolną z następujących opcji, jeśli jest to odpowiednie dla Twojej sytuacji.

    • zastąpić istniejącą bazę danych (ZASTĄP)

    • Zachowaj ustawienia replikacji (WITH KEEP_REPLICATION)

    • Wyświetlaj monit przed przywróceniem każdej kopii zapasowej

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

    Aby uzyskać więcej informacji na temat tych opcji, zobacz Restore Database (Strona opcji).

  8. Wybierz opcję dla pola stanu odzyskiwania . To pole określa stan bazy danych po operacji przywracania.

    • RESTORE WITH RECOVERY jest zachowaniem domyślnym, które pozostawia bazę danych gotową do użycia poprzez wycofanie niezatwierdzonych transakcji. Nie można przywrócić dodatkowych dzienników transakcji. Wybierz tę opcję, jeśli przywracasz teraz wszystkie niezbędne kopie zapasowe.

    • RESTORE WITH NORECOVERY, która pozostawia bazę danych w stanie nieoperacyjnym i nie cofa niezatwierdzonych transakcji. Można przywrócić dodatkowe dzienniki transakcji. Nie można użyć bazy danych, dopóki nie zostanie odzyskana.

    • RESTORE WITH STANDBY, który pozostawia bazę danych w trybie tylko do odczytu. Cofa niezatwierdzone transakcje, ale zapisuje akcje cofania w pliku rezerwowym, aby można było przywrócić efekty odzyskiwania.

    Aby uzyskać opisy opcji, zobacz Restore Database (Strona opcji).

  9. Operacje przywracania kończą się niepowodzeniem, jeśli istnieją aktywne połączenia z bazą danych. Sprawdź opcję Zamknij istniejące połączenia, aby upewnić się, że wszystkie aktywne połączenia między programem Management Studio i bazą danych są zamknięte.

  10. Wybierz opcję Monit przed przywróceniem każdej kopii zapasowej, jeśli chcesz otrzymać monit przed każdą operacją przywracania. Zwykle nie jest to konieczne, chyba że baza danych jest duża i chcesz monitorować stan operacji przywracania.

  11. Opcjonalnie użyj strony Files, aby przywrócić bazę danych do nowej lokalizacji. Aby uzyskać pomoc dotyczącą przenoszenia bazy danych, zobacz Przywracanie bazy danych do nowej lokalizacji (SQL Server).

  12. Wybierz pozycję OK.

Korzystanie z Transact-SQL

Aby przywrócić różnicową kopię zapasową bazy danych

  1. Wykonaj instrukcję RESTORE DATABASE, określając klauzulę NORECOVERY, aby przywrócić pełną kopię zapasową bazy danych, która następuje przed różnicowym tworzeniem kopii zapasowej bazy danych. Aby uzyskać więcej informacji, zobacz Instrukcje: przywracanie pełnej kopii zapasowej.

  2. Wykonaj instrukcję RESTORE DATABASE, aby przywrócić różnicową kopię zapasową bazy danych, określając:

    • Nazwa bazy danych, do której jest stosowana różnicowa kopia zapasowa bazy danych.

    • Urządzenie kopii zapasowej, z którego jest przywracana różnicowa kopia zapasowa bazy danych.

    • Kiedy masz kopie zapasowe dzienników transakcji do zastosowania po przywróceniu różnicowej kopii zapasowej bazy danych, użyj klauzuli NORECOVERY. W przeciwnym razie określ klauzulę ODZYSKIWANIE.

  3. W przypadku pełnego lub masowo rejestrowanego modelu odzyskiwania, przywrócenie różnicowej kopii zapasowej bazy danych przywraca bazę danych do stanu z momentu ukończenia tej kopii. Aby odzyskać dane do punktu awarii, należy zastosować wszystkie kopie zapasowe dziennika transakcji utworzone po utworzeniu ostatniej różnicowej kopii zapasowej bazy danych. Aby uzyskać więcej informacji, zobacz Apply Transaction Log Backups (SQL Server).

Przykłady (Transact-SQL)

A. Przywracanie różnicowej kopii zapasowej bazy danych

W tym przykładzie przywracana jest kopia zapasowa bazy danych i różnicowa kopia zapasowa bazy danych MyAdvWorks.

SQL
-- Assume the database is lost, and restore full database,   
-- specifying the original full database backup and NORECOVERY,   
-- which allows subsequent restore operations to proceed.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH NORECOVERY;  
GO  
-- Now restore the differential database backup, the second backup on   
-- the MyAdvWorks_1 backup device.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH FILE = 2,  
   RECOVERY;  
GO  

B. Przywracanie bazy danych, różnicowej bazy danych i kopii zapasowej dziennika transakcji

W tym przykładzie przywrócono bazę danych, różnicową bazę danych i kopię zapasową dziennika transakcji bazy danych MyAdvWorks.

SQL
-- Assume the database is lost at this point. Now restore the full   
-- database. Specify the original full database backup and NORECOVERY.  
-- NORECOVERY allows subsequent restore operations to proceed.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH NORECOVERY;  
GO  
-- Now restore the differential database backup, the second backup on   
-- the MyAdvWorks_1 backup device.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH FILE = 2,  
   NORECOVERY;  
GO  
-- Now restore each transaction log backup created after  
-- the differential database backup.  
RESTORE LOG MyAdvWorks  
   FROM MyAdvWorks_log1  
   WITH NORECOVERY;  
GO  
RESTORE LOG MyAdvWorks  
   FROM MyAdvWorks_log2  
   WITH RECOVERY;  
GO  

Powiązane zadania

Zobacz też

Przyrostowe kopie zapasowe (SQL Server)
RESTORE (Transact-SQL)