Wiederherstellen der Masterdatenbank unter Linux im Einzelbenutzermodus
Gilt für: SQL Server – Linux
Unter bestimmten Umständen müssen Sie die master
Datenbank möglicherweise in einer Instanz von SQL Server im Einzelbenutzermodus unter Linux wiederherstellen. Szenarien umfassen die Migration zu einer neuen Instanz oder die Wiederherstellung von Inkonsistenzen.
Hinweis
SQL Server wird nach Abschluss der Wiederherstellung automatisch heruntergefahren. Dieses Verhalten ist beabsichtigt.
Zum Wiederherstellen der master
-Datenbank müssen Sie SQL Server im Einzelbenutzermodus starten, indem die Startoption -m
über die Befehlszeile verwendet wird.
Informationen zum Starten einer SQL Server Instanz im Einzelbenutzermodus unter Windows finden Sie unter Einzelbenutzermodus für SQL Server.
Voraussetzungen
SQL Server im Einzelbenutzermodus zu starten, ermöglicht einem beliebigen Mitglied der lokalen Administratorengruppe, eine Verbindung mit SQL Server als Mitglied der festen Serverrolle sysadmin herzustellen. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit SQL Server, wenn Systemadministratoren gesperrt sind.
Wenn Sie eine Instanz von SQL Server im Einzelbenutzermodus starten:
- Nur ein einziger Benutzer kann die Verbindung mit dem Server herstellen.
- Der
CHECKPOINT
-Prozess wird nicht ausgeführt. Standardmäßig wird dieser Prozess beim Starten automatisch ausgeführt.
Anhalten des SQL Server-Dienstes
Der folgende Befehl beendet die SQL Server Instanz, wenn sie derzeit ausgeführt wird:
systemctl stop mssql-server
Ändern des aktuellen Benutzers in mssql
SQL Server für Linux wird unter dem
mssql
-Benutzer ausgeführt, sodass Sie zuerst zu diesem Benutzer wechseln. Sie werden beim Ausführen dieses Befehls zur Eingabe desroot
-Kennworts aufgefordert.su mssql
Starten von SQL Server im Einzelbenutzermodus
Wenn Sie die
-m
-Option mitSQLCMD
verwenden, können Sie die Verbindungen auf eine angegebene Clientanwendung beschränken. (SQLCMD
muss wie dargestellt großgeschrieben werden):/opt/mssql/bin/sqlservr -m"SQLCMD"
Im vorherigen Beispiel beschränkt
-m"SQLCMD"
Verbindungen auf eine einzelne Verbindung, und diese Verbindung muss sich selbst als sqlcmd-Clientprogramm identifizieren. Verwenden Sie diese Option, wenn Sie SQL Server im Einzelbenutzermodus starten, um einemaster
-Datenbank wiederherzustellen.Wenn SQL Server gestartet wird, werden mehrere Protokolleinträge generiert. Sie können sich vergewissern, dass sie im Einzelbenutzermodus ausgeführt wird, indem Sie nach den folgenden Zeilen in der Ausgabe suchen:
[...] 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.
Herstellen einer Verbindung mit der SQL Server-Instanz
Verwenden Sie sqlcmd, um eine Verbindung zu der SQL Server Instanz herzustellen:
/opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <StrongPassword>
Im vorherigen Beispiel ist
<ServerName>
der Name des Hosts, auf dem SQL Server ausgeführt wird, wenn Sie remote eine Verbindung herstellen. Wenn Sie direkt auf dem Host eine Verbindung herstellen, auf dem SQL Server ausgeführt wird, können Sie diesen Parameter überspringen oderlocalhost
verwenden.<StringPassword>
ist das Kennwort für das SA-Konto.
Wiederherstellen der master
-Datenbank
Führen Sie die folgenden Befehle in sqlcmd aus. Denken Sie daran, dass sqlcmd am Ende des Skripts
GO
erwartet, damit es ausgeführt werden kann.use [master]; 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
Im vorherigen Beispiel lautet der Pfad zu der
master
-Datenbanksicherungsdatei/var/opt/mssql/data/master.bak
. Sie müssen diesen Wert durch den richtigen Pfad zurmaster
-Datenbanksicherungsdatei ersetzen.Die Ausgabe sollte ähnlich wie im folgenden Beispiel angezeigt werden, wenn die Wiederherstellung erfolgreich ist.
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.
Neustarten des SQL Server-Diensts
Um SQL Server neu zu starten, führen Sie den folgenden Befehl aus.
systemctl start mssql-server
Hinweise
Wenn Sie eine master
-Datenbanksicherung wiederherstellen, werden alle vorhandenen Benutzerdatenbanken, die der Instanz hinzugefügt wurden, nachdem die Sicherung durchgeführt wurde, nach der Wiederherstellung von master
nicht angezeigt. Die Dateien sollten weiterhin auf der Speicherebene vorhanden sein, sodass Sie diese Benutzerdatenbankdateien manuell neu anfügen müssen, damit diese Datenbanken online gestellt werden können. Weitere Informationen finden Sie unter Attach a Database.