Udostępnij za pośrednictwem


Przywracanie bazy danych do nowej lokalizacji (SQL Server)

Dotyczy:programu SQL Server

W tym artykule opisano, jak przywrócić bazę danych programu SQL Server do nowej lokalizacji i opcjonalnie zmienić nazwę bazy danych w programie SQL Server przy użyciu programu SQL Server Management Studio (SSMS) lub języka Transact-SQL. Bazę danych można przenieść do nowej ścieżki katalogu lub utworzyć jej kopię na tym samym wystąpieniu serwera albo na innym.

Przed rozpoczęciem

Ograniczenia i ograniczenia

  • Administrator systemu przywracający pełną kopię zapasową bazy danych musi być jedyną osobą, która obecnie używa bazy danych do przywrócenia.

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. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej dziennika transakcji (SQL Server).

  • Aby przywrócić zaszyfrowaną bazę danych, musisz mieć dostęp do certyfikatu lub klucza asymetrycznego używanego do szyfrowania bazy danych! bez tego certyfikatu lub klucza asymetrycznego nie można przywrócić bazy danych. Należy zachować ten certyfikat używany do szyfrowania klucza szyfrowania bazy danych tak długo, jak potrzebujesz kopii zapasowej. Aby uzyskać więcej informacji, zobacz certyfikaty programu SQL Server i klucze asymetryczne.

Zalecenia

  • Aby zapoznać się z innymi zagadnieniami dotyczącymi przenoszenia bazy danych, zobacz Copy Databases with Backup and Restore (Kopiowanie baz danych za pomocą kopii zapasowych i przywracania).

  • Jeśli przywrócisz bazę danych programu SQL Server 2005 (9.x) lub nowszej do programu SQL Server, baza danych zostanie automatycznie uaktualniona. Zazwyczaj baza danych staje się dostępna natychmiast. Jeśli jednak baza danych programu SQL Server 2005 (9.x) zawiera indeksy pełnotekstowe, proces uaktualniania importuje, resetuje lub ponownie kompiluje je, w zależności od ustawienia właściwości serwera upgrade_option. Jeśli opcja uaktualnienia zostanie ustawiona na import (upgrade_option = 2) lub odbudowę (upgrade_option = 0), indeksy pełnotekstowe będą niedostępne podczas uaktualniania. W zależności od ilości indeksowanych danych importowanie może potrwać kilka godzin, a ponowne kompilowanie może potrwać do 10 razy dłużej. Należy również pamiętać, że po ustawieniu opcji uaktualnienia na import skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane, jeśli wykaz pełnotekstowy nie jest dostępny. Aby zmienić ustawienie właściwości serwera upgrade_option, użyj sp_fulltext_service.

Bezpieczeństwo

W celach bezpieczeństwa zalecamy, aby nie dołączać ani przywracać baz danych z nieznanych lub niezaufanych źródeł. Takie bazy danych mogą zawierać złośliwy kod, który może wykonywać niezamierzony kod Transact-SQL lub powodować błędy, modyfikując schemat lub fizyczną strukturę bazy danych. Przed użyciem bazy danych z nieznanego lub niezaufanego źródła uruchom DBCC CHECKDB w bazie danych na serwerze nieprodukcyjnym, a także sprawdź kod, taki jak procedury składowane lub inny kod zdefiniowany przez użytkownika, w bazie danych.

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 domyślnie przysługują członkom sysadmin i dbcreator stałych ról serwera i właścicielowi (dbo) bazy danych.

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że być sprawdzane tylko wtedy, gdy baza danych jest dostępna i nieuszkodzony, co nie zawsze ma przypadek podczas wykonywania przywracania, członkowie db_owner stałej roli bazy danych nie mają uprawnień RESTORE.

Przywracanie bazy danych do nowej lokalizacji; opcjonalnie zmień nazwę bazy danych przy użyciu programu SSMS

  1. Połącz się z odpowiednim wystąpieniem aparatu bazy danych programu SQL Server, a następnie w Eksploratorze obiektów wybierz nazwę serwera, aby rozwinąć drzewo serwerów.

  2. Kliknij prawym przyciskiem myszy pozycję Bazy danych, a następnie wybierz pozycję Przywróć bazę danych. Zostanie otwarte okno dialogowe przywracania bazy danych.

  3. 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 te bazy danych, których kopia zapasowa została utworzona zgodnie z historią wykonywania kopii zapasowych msdb.

    Notatka

    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

      Wybierz 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 pola nośnika kopii zapasowej, wybierz pozycję Dodaj.

      Po dodaniu urządzeń do listy Nośnik kopii zapasowych wybierz OK, aby powrócić do strony Ogólna.

      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.

  4. 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.

  5. Przywróć do , pozostawiając wartość domyślną Do ostatniej kopii zapasowej wykonanej lub wybierz Oś czasu , aby uzyskać dostęp do okna dialogowego Oś czasu kopii zapasowej i ręcznie wybrać punkt w czasie, w którym należy zatrzymać akcję odzyskiwania. Zobacz Oś czasu tworzenia kopii zapasowej, aby uzyskać więcej informacji na temat określenia konkretnego punktu w czasie.

  6. W siatce Zestawy kopii zapasowych do przywrócenia wybierz kopie zapasowe do przywrócenia. Ta siatka wyświetla kopie zapasowe dostępne dla określonej lokalizacji. Domyślnie sugerowany jest plan odzyskiwania. Aby zastąpić zalecany plan odzyskiwania, możesz zmienić wybrane opcje w tabeli. Kopie zapasowe, które zależą od przywrócenia wcześniejszej kopii zapasowej, są automatycznie usuwane po usunięciu wcześniejszej kopii zapasowej.

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

  7. Aby określić nową lokalizację plików bazy danych, wybierz stronę Files, a następnie wybierz pozycję Przenieś wszystkie pliki do folderu. Podaj nową lokalizację folderu plików Data i folderu plików dziennika . Aby uzyskać więcej informacji na temat tej siatki, zobacz Restore Database (Strona plików).

  8. Na stronie Opcje dostosuj ustawienia, jeśli chcesz. Aby uzyskać więcej informacji na temat tych opcji, zobacz Restore Database (Strona opcji).

Przywracanie bazy danych do nowej lokalizacji; opcjonalnie zmień nazwę bazy danych przy użyciu języka T-SQL

  1. Opcjonalnie określ logiczne i fizyczne nazwy plików w zestawie kopii zapasowych, który zawiera pełną kopię zapasową bazy danych, którą chcesz przywrócić. Ta instrukcja zwraca listę plików bazy danych i dziennika zawartych w zestawie kopii zapasowych. Podstawowa składnia jest następująca:

    PRZYWRÓĆ FILELISTONLY Z <backup_device> PRZY POMOCY PLIKU = backup_set_file_number

    W tym miejscu backup_set_file_number wskazuje położenie kopii zapasowej w zestawie multimediów. Możesz uzyskać informacje o położeniu zestawu kopii zapasowych przy użyciu instrukcji RESTORE HEADERONLY. Aby uzyskać więcej informacji, zobacz Określanie zestawu kopii zapasowych.

    To oświadczenie obsługuje również kilka opcji WITH. Aby uzyskać więcej informacji, zobacz RESTORE FILELISTONLY (Transact-SQL).

  2. Użyj instrukcji RESTORE DATABASE, aby przywrócić pełną kopię zapasową bazy danych. Domyślnie pliki danych i dziennika są przywracane do ich oryginalnych lokalizacji. Aby przenieść bazę danych, użyj opcji MOVE, aby przenieść wszystkie pliki bazy danych i uniknąć kolizji z istniejącymi plikami.

Podstawowa składnia Transact-SQL przywracania bazy danych do nowej lokalizacji oraz nowej nazwy to:

RESTORE DATABASE *new_database_name*  

FROM *backup_device* [ ,...*n* ]  

[ WITH  

 {  

    [ **RECOVERY** | NORECOVERY ]  

    [ , ] [ FILE ={ *backup_set_file_number* | @*backup_set_file_number* } ]  

    [ , ] MOVE '*logical_file_name_in_backup*' TO '*operating_system_file_name*' [ ,...*n* ]  

}  

;  

Notatka

Podczas przygotowywania do przeniesienia bazy danych na innym dysku należy sprawdzić, czy jest dostępna wystarczająca ilość miejsca i zidentyfikować potencjalne kolizje z istniejącymi plikami. Obejmuje to użycie instrukcji RESTORE VERIFYONLY, która określa te same parametry MOVE, które zamierzasz użyć w instrukcji RESTORE DATABASE.

W poniższej tabeli opisano argumenty tej instrukcji RESTORE pod względem przywracania bazy danych do nowej lokalizacji. Aby uzyskać więcej informacji na temat tych argumentów, zobacz RESTORE (Transact-SQL).

nowa_nazwa_bazy_danych
Nowa nazwa bazy danych.

Notatka

Jeśli przywracasz bazę danych do innego wystąpienia serwera, możesz użyć oryginalnej nazwy bazy danych zamiast nowej nazwy.

backup_device [ ,...n ]
Określa rozdzielaną przecinkami listę od 1 do 64 urządzeń kopii zapasowych, z których ma zostać przywrócona kopia zapasowa bazy danych. Można określić fizyczne urządzenie kopii zapasowej lub określić odpowiednie logiczne urządzenie kopii zapasowej, jeśli jest zdefiniowane. Aby określić fizyczne urządzenie kopii zapasowej, użyj opcji DISK lub TAPE:

{ DYSK | TAŚMA } =nazwa_urządzenia_kopie_zapasowej

Aby uzyskać więcej informacji, zobacz Backup Devices (SQL Server).

{ RECOVERY | NORECOVERY }
Jeśli baza danych korzysta z pełnego modelu odzyskiwania, może być konieczne zastosowanie kopii zapasowych dziennika transakcji po przywróceniu bazy danych. W takim przypadku określ opcję NORECOVERY.

W przeciwnym razie użyj opcji ODZYSKIWANIA, która jest wartością domyślną.

PLIK = { backup_set_file_number | @backup_set_file_number }
Identyfikuje zestaw kopii zapasowych do przywrócenia. Na przykład backup_set_file_number1 wskazuje pierwszy zestaw kopii zapasowych na nośniku kopii zapasowej i backup_set_file_number2 wskazuje drugi zestaw kopii zapasowych. Można uzyskać backup_set_file_number zestawu kopii zapasowej, używając instrukcji RESTORE HEADERONLY.

Jeśli ta opcja nie zostanie określona, wartością domyślną jest użycie pierwszego zestawu kopii zapasowej na urządzeniu kopii zapasowej.

Aby uzyskać więcej informacji, zobacz "Określanie zestawu kopii zapasowych" w argumenty RESTORE (Transact-SQL).

MOVE 'nazwa_pliku_logicznego_w_kopii_zapasowej' DO 'nazwa_pliku_systemu_operacyjnego' [ ,...n ]
Określa, że plik danych lub dziennika określony przez logical_file_name_in_backup ma zostać przywrócony do lokalizacji określonej przez operating_system_file_name. Określ instrukcję MOVE dla każdego pliku logicznego, który chcesz przywrócić z zestawu kopii zapasowej do nowej lokalizacji.

Opcja Opis
logical_file_name_in_backup Określa nazwę logiczną danych lub pliku dziennika w zestawie kopii zapasowych. Nazwa pliku logicznego danych lub pliku dziennika w zestawie kopii zapasowych jest zgodna z jego nazwą logiczną w bazie danych podczas tworzenia zestawu kopii zapasowych.



Uwaga: Aby uzyskać listę plików logicznych z zestawu kopii zapasowych, użyj RESTORE FILELISTONLY.
nazwa_pliku_systemu_operacyjnego Określa nową lokalizację pliku określonego przez logical_file_name_in_backup. Plik zostanie przywrócony do tej lokalizacji.

Opcjonalnie operating_system_file_name określa nową nazwę pliku dla przywróconego pliku. Jest to konieczne, jeśli tworzysz kopię istniejącej bazy danych w tym samym wystąpieniu serwera.
n Jest symbolem zastępczym wskazującym, że można określić dodatkowe instrukcje MOVE.

Przykład (Transact-SQL)

W tym przykładzie zostanie utworzona nowa baza danych o nazwie MyAdvWorks, przywracając kopię zapasową przykładowej bazy danych AdventureWorks2022, która zawiera dwa pliki: AdventureWorks2022_Data i AdventureWorks2022_Log. Ta baza danych używa prostego modelu odzyskiwania. Baza danych AdventureWorks2022 już istnieje na instancji serwera, więc pliki z kopii zapasowej muszą zostać przywrócone do nowej lokalizacji. Instrukcja RESTORE FILELISTONLY służy do określania liczby i nazw plików w przywracanej bazie danych. Kopia zapasowa bazy danych jest pierwszym zestawem kopii zapasowych na urządzeniu kopii zapasowej.

Notatka

Przykłady tworzenia kopii zapasowych i przywracania dziennika transakcji, w tym przywracania do punktu w czasie, używają bazy danych MyAdvWorks_FullRM utworzonej na podstawie AdventureWorks2022 tak jak w poniższym przykładzie MyAdvWorks. Jednak wynikowa baza danych MyAdvWorks_FullRM musi zostać zmieniona, aby korzystać z modelu pełnego odzyskiwania przy użyciu następującej instrukcji Transact-SQL: ALTER DATABASE <database_name> SET RECOVERY FULL.

USE master;  
GO  
-- First determine the number and names of the files in the backup.  
-- AdventureWorks2022_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2022_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2022_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';  
GO  
  

Aby zapoznać się z przykładem tworzenia pełnej kopii zapasowej bazy danych AdventureWorks2022, zobacz Tworzenie pełnej kopii zapasowej bazy danych (SQL Server).

Powiązane zadania

Zobacz też