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

  1. Der folgende Befehl beendet die SQL Server Instanz, wenn sie derzeit ausgeführt wird:

    systemctl stop mssql-server
    

Ändern des aktuellen Benutzers in mssql

  1. 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 des root-Kennworts aufgefordert.

    su mssql
    

Starten von SQL Server im Einzelbenutzermodus

  1. Wenn Sie die -m-Option mit SQLCMD 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 eine master-Datenbank wiederherzustellen.

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

  1. 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 oder localhost verwenden. <StringPassword> ist das Kennwort für das SA-Konto.

Wiederherstellen der master-Datenbank

  1. 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 zur master-Datenbanksicherungsdatei ersetzen.

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

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