Udostępnij za pośrednictwem


Przywracanie bazy danych master (Transact-SQL)

Dotyczy:programu SQL Server

W tym artykule wyjaśniono, jak przywrócić bazę danych master z pełnej kopii zapasowej bazy danych.

Ostrzeżenie

W przypadku odzyskiwania po awarii instancja, do której przywracana jest baza danych master, powinna być jak najbliższym odwzorowaniem oryginału. Co najmniej to wystąpienie odzyskiwania powinno mieć taką samą wersję, edycję i poziom poprawek oraz taki sam wybór funkcji i taką samą konfigurację zewnętrzną (nazwa hosta, członkostwo w klastrze itd.) co oryginalne wystąpienie. W przeciwnym razie może spowodować niezdefiniowane zachowanie instancji SQL Server, prowadzące do niespójnej obsługi funkcji, co nie ma gwarancji, że będzie skuteczne.

Przywracanie bazy danych master

  1. Uruchom wystąpienie serwera w trybie pojedynczego użytkownika.

    Program SQL Server można uruchomić przy użyciu parametrów uruchamiania -m lub -f. Aby uzyskać więcej informacji na temat parametrów uruchamiania, zobacz Opcje uruchamiania usługi aparatu bazy danych.

    W wierszu polecenia uruchom następujące polecenia i upewnij się, że zastąpisz MSSQLXX.instance odpowiednią nazwą folderu:

    cd C:\Program Files\Microsoft SQL Server\MSSQLXX.instance\MSSQL\Binn
    sqlservr -c -f -s <instance> -mSQLCMD
    
    • Parametr -mSQLCMD gwarantuje, że tylko sqlcmd może łączyć się z programem SQL Server.
    • W przypadku nazwy wystąpienia domyślnego użyj -s MSSQLSERVER
    • -c uruchamia program SQL Server jako aplikację w celu obejścia programu Service Control Manager w celu skrócenia czasu uruchamiania

    Jeśli instancja SQL Server nie może się uruchomić z powodu uszkodzonej bazy danych master, najpierw należy odbudować systemowe bazy danych. Aby uzyskać więcej informacji, zobacz Odbudowywanie systemowych baz danych.

  2. Połącz się z programem SQL Server przy użyciu narzędzia sqlcmd z innego okna wiersza polecenia:

    sqlcmd -S <instance> -E -d master
    
  3. Aby przywrócić pełną kopię zapasową master bazy danych, użyj następujących instrukcji RESTORETransact-SQL:

    RESTORE DATABASE master FROM <backup_device> WITH REPLACE;
    

    Opcja REPLACE powoduje, że program SQL Server przywróci określoną bazę danych nawet wtedy, gdy baza danych o tej samej nazwie już istnieje. Istniejąca baza danych, jeśli istnieje, zostanie usunięta. W trybie pojedynczego użytkownika zalecamy wprowadzenie instrukcji RESTORE DATABASE w narzędziu sqlcmd. Aby uzyskać więcej informacji, zobacz Use sqlcmd (Używanie narzędzia sqlcmd).

    Ważny

    Po przywróceniu master, to wystąpienie programu SQL Server zostanie wyłączone i zakończy proces sqlcmd. Przed ponownym uruchomieniem instancji serwera usuń parametr startowy dla trybu pojedynczego użytkownika. Aby uzyskać więcej informacji, zobacz SQL Server Configuration Manager: Configure server startup options (Program SQL Server Configuration Manager: Konfigurowanie opcji uruchamiania serwera).

  4. Uruchom ponownie wystąpienie serwera normalnie jako usługę bez używania żadnych parametrów uruchamiania.

  5. Kontynuuj inne kroki odzyskiwania, takie jak przywracanie innych baz danych, dołączanie baz danych i poprawianie niezgodności użytkowników.

Przykłady

Poniższy przykład przywraca bazę danych master na domyślnym serwerze. W tym przykładzie przyjęto założenie, że wystąpienie serwera jest już uruchomione w trybie pojedynczego użytkownika. Przykład uruchamia narzędzie sqlcmd i wykonuje instrukcję RESTORE DATABASE , która przywraca pełną kopię zapasową master bazy danych z urządzenia dyskowego: Z:\SQLServerBackups\master.bak.

W przypadku nazwanego wystąpienia polecenie sqlcmd musi określić -S<computer-name>\<instance-name> opcję.

C:\> sqlcmd
1> RESTORE DATABASE master FROM DISK = 'Z:\SQLServerBackups\master.bak' WITH REPLACE;
2> GO