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
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
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
Pokud použijete možnost
-m
sSQLCMD
, 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.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
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žítlocalhost
.<StringPassword>
je heslo pro účet SA.
Obnovení databáze master
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ázemaster
.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.
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í master
viditelné 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.