Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server — Linux
W pewnych okolicznościach może być konieczne przywrócenie bazy danych master
na wystąpieniu programu SQL Server w trybie pojedynczego użytkownika w systemie Linux. Scenariusze obejmują migrację do nowego wystąpienia lub odzyskiwanie po niespójnościach.
Notatka
Program SQL Server zostanie automatycznie zamknięty po zakończeniu przywracania. To zachowanie jest zgodnie z projektem.
Aby przywrócić bazę danych master
, należy uruchomić program SQL Server w trybie pojedynczego użytkownika przy użyciu opcji uruchamiania -m
z wiersza polecenia.
Aby uruchomić wystąpienie programu SQL Server w trybie pojedynczego użytkownika w systemie Windows, zobacz Tryb pojedynczego użytkownika dla programu SQL Server.
Warunki wstępne
Uruchamianie programu SQL Server w trybie pojedynczego użytkownika umożliwia każdemu członkowi lokalnej grupy administratorów możliwość nawiązania połączenia z programem SQL Server jako członek roli serwera sysadmin. Aby uzyskać więcej informacji, zobacz Jak połączyć się z serwerem SQL, gdy administratorzy systemu są zablokowani.
Po uruchomieniu wystąpienia programu SQL Server w trybie pojedynczego użytkownika:
- Tylko jeden użytkownik może nawiązać połączenie z serwerem.
- Proces
CHECKPOINT
nie jest wykonywany. Domyślnie jest uruchamiany automatycznie podczas uruchamiania.
Zatrzymaj usługę SQL Server
Następujące polecenie zatrzymuje wystąpienie programu SQL Server, jeśli jest aktualnie uruchomione:
systemctl stop mssql-server
Zmień bieżącego użytkownika na mssql
Program SQL Server w systemie Linux działa w ramach użytkownika
mssql
, dlatego najpierw musisz przełączyć się na tego użytkownika. Podczas uruchamiania tego polecenia zostanie wyświetlony monit o podanie hasłaroot
.su mssql
Uruchamianie programu SQL Server w trybie pojedynczego użytkownika
W przypadku używania opcji
-m
zSQLCMD
można ograniczyć połączenia z określoną aplikacją kliencką (SQLCMD
muszą być zapisane wielkimi literami, jak pokazano)./opt/mssql/bin/sqlservr -m"SQLCMD"
W poprzednim przykładzie
-m"SQLCMD"
ogranicza połączenia do jednego, a to połączenie musi identyfikować się jako program kliencki sqlcmd. Użyj tej opcji podczas uruchamiania programu SQL Server w trybie pojedynczego użytkownika, aby przywrócić bazę danychmaster
.Podczas uruchamiania programu SQL Server generuje kilka wpisów dziennika. Możesz potwierdzić, że działa w trybie pojedynczego użytkownika, wyszukując następujące wiersze w danych wyjściowych:
[...] 2022-05-24 04:26:27.24 Server Command Line Startup Parameters: -m "SQLCMD" [...] 2022-05-24 04:26:28.20 spid8s Warning ****************** 2022-05-24 04:26:28.21 spid8s SQL Server started in single-user mode. This an informational message only. No user action is required.
Połącz się z wystąpieniem SQL Server
Użyj sqlcmd, aby nawiązać połączenie z instancją SQL Server. Po wykonaniu kroków opisanych w sekcji Uruchamianie programu SQL Server w trybie pojedynczego użytkownika można zobaczyć, że program SQL Server działa w trybie interaktywnym . W związku z tym należy otworzyć nową sesję terminalu, aby uruchomić sqlcmd w następujący sposób.
/opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <password>
W poprzednim przykładzie
<ServerName>
jest nazwą hosta z uruchomionym programem SQL Server, jeśli łączysz się zdalnie. Jeśli łączysz się bezpośrednio na hoście, na którym działa program SQL Server, możesz pominąć ten parametr lub użyćlocalhost
.<StringPassword>
to hasło dla konta SA .
Przywracanie bazy danych master
Uruchom następujące polecenia w sqlcmd. Należy pamiętać, że sqlcmd oczekuje
GO
na końcu skryptu, aby go wykonać.USE [master]; GO RESTORE DATABASE [master] FROM DISK = N'/var/opt/mssql/data/master.bak' WITH FILE = 1, MOVE N'master' TO N'/var/opt/mssql/data/master.mdf', MOVE N'mastlog' TO N'/var/opt/mssql/data/mastlog.ldf', NOUNLOAD, REPLACE, STATS = 5; GO
W poprzednim przykładzie ścieżka do pliku kopii zapasowej bazy danych
master
jest/var/opt/mssql/data/master.bak
. Tę wartość należy zastąpić poprawną ścieżką do pliku kopii zapasowej bazy danychmaster
.Powinny zostać wyświetlone dane wyjściowe podobne do poniższego przykładu, jeśli przywracanie zakończy się pomyślnie.
Processed 456 pages for database 'master', file 'master' on file 1. Processed 5 pages for database 'master', file 'mastlog' on file 1. The master database has been successfully restored. Shutting down SQL Server. SQL Server is terminating this process.
Uruchom ponownie usługę SQL Server
Aby ponownie uruchomić program SQL Server, uruchom następujące polecenie.
systemctl start mssql-server
Uwagi
Po przywróceniu kopii zapasowej bazy danych master
, bazy danych użytkowników dodane do instancji po wykonaniu tej kopii nie będą widoczne po przywróceniu master
. Pliki powinny nadal istnieć w warstwie magazynu, więc należy ręcznie ponownie dołączyć te pliki bazy danych użytkownika, aby przenieść te bazy danych w tryb online. Aby uzyskać więcej informacji, zobacz Załącz bazę danych.