Sdílet prostřednictvím


Obnovení hlavní databáze v Linuxu v režimu jednoho uživatele

platí pro:SQL Server – Linux

Za určitých okolností možná budete muset obnovit databázi master v instanci SQL Serveru v režimu jednoho uživatele v Linuxu. Mezi scénáře patří migrace na novou instanci nebo obnovení z nesrovnalostí.

Poznámka

SQL Server se po dokončení obnovení automaticky vypne. Toto chování je záměrně.

Chcete-li obnovit databázi master, je nutné spustit SQL Server v režimu jednoho uživatele pomocí spouštěcí možnosti -m z příkazového řádku.

Informace o spuštění instance SYSTÉMU SQL Server v režimu jednoho uživatele v systému Windows naleznete v tématu režim jednoho uživatele pro SQL Server.

Požadavky

Spuštění SQL Serveru v režimu jednoho uživatele umožňuje všem členům místní skupiny správců připojit se k SQL Serveru jako člen správce systému pevné role serveru. Další informace najdete v tématu Připojení k SQL Serveru, pokud jsou správci systému uzamčeni.

Při spuštění instance SQL Serveru v režimu jednoho uživatele:

  • K serveru se může připojit jenom jeden uživatel.
  • Proces CHECKPOINT se nespustí. Ve výchozím nastavení se spustí automaticky při spuštění.

Zastavení služby SQL Serveru

  1. Následující příkaz zastaví instanci SQL Serveru, pokud je aktuálně spuštěná:

    systemctl stop mssql-server
    

Změna aktuálního uživatele na mssql

  1. SQL Server v Linuxu běží pod uživatelem mssql, takže musíte nejprve přepnout na tohoto uživatele. Při spuštění tohoto příkazu se zobrazí výzva k zadání root hesla.

    su mssql
    

Spuštění SQL Serveru v režimu jednoho uživatele

  1. Pokud použijete možnost -m s SQLCMD, můžete omezit připojení k zadané klientské aplikaci (SQLCMD musí být velkými písmeny, jak je znázorněno):

    /opt/mssql/bin/sqlservr -m"SQLCMD"
    

    V předchozím příkladu -m"SQLCMD" omezuje připojení k jednomu připojení a toto připojení se musí identifikovat jako klientský program sqlcmd. Tuto možnost použijte při spuštění SQL Serveru v režimu jednoho uživatele k obnovení master databáze.

  2. Když se SQL Server spustí, vygeneruje několik položek protokolu. Pokud chcete ověřit, že je spuštěný v režimu jednoho uživatele, vyhledejte ve výstupu následující řádky:

    [...]
    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.
    

Připojení k instanci SQL Serveru

  1. K připojení k instanci SQL Serveru použijte sqlcmd. Po dokončení kroků popsaných v části Spuštění SQL Serveru v režimu jednoho uživatele uvidíte, že SQL Server běží v interaktivním režimu. Proto je nutné otevřít novou relaci terminálu pro spuštění sqlcmd následujícím způsobem.

    /opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <password>
    

    V předchozím příkladu je <ServerName> název hostitele se systémem SQL Server, pokud se připojujete vzdáleně. Pokud se připojujete přímo na hostiteli, na kterém běží SQL Server, můžete tento parametr přeskočit nebo použít localhost. <StringPassword> je heslo pro účet SA.

Obnovení databáze master

  1. V sqlcmd spusťte následující příkazy. Nezapomeňte, že sqlcmd očekává na konci skriptu GO pro jeho spuštění.

    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
    

    V předchozím příkladu je cesta k záložnímu souboru databáze master/var/opt/mssql/data/master.bak. Musíte nahradit tuto hodnotu správnou cestou k záložnímu souboru databáze master.

  2. Pokud je obnovení úspěšné, měl by se zobrazit výstup podobný následujícímu příkladu.

    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.
    

Restartujte službu SQL Serveru.

  1. Pokud chcete restartovat SQL Server, spusťte následující příkaz.

    systemctl start mssql-server
    

Poznámky

Když obnovíte zálohu master databáze, nebudou po obnovení masterviditelné všechny existující uživatelské databáze přidané do instance po provedení zálohy. Soubory by měly stále existovat ve vrstvě úložiště, takže je potřeba tyto soubory uživatelské databáze znovu připojit ručně, aby byly tyto databáze online. Pro více informací viz Připojit databázi.