De hoofddatabase in Linux herstellen in de modus voor één gebruiker
van toepassing op:SQL Server- - Linux
Onder bepaalde omstandigheden moet u mogelijk de master
-database herstellen op een exemplaar van SQL Server in de modus voor één gebruiker in Linux. Scenario's omvatten het migreren naar een nieuw exemplaar of het herstellen van inconsistenties.
Notitie
SQL Server wordt automatisch afgesloten nadat het herstellen is voltooid. Dit gedrag is standaard.
Als u de master
-database wilt herstellen, moet u SQL Server in de modus voor één gebruiker starten met behulp van de opstartoptie -m
vanaf de opdrachtregel.
Zie modus voor één gebruiker voor SQL Servervoor het starten van een SQL Server-exemplaar in de modus voor één gebruiker in Windows.
Voorwaarden
Als u SQL Server start in de modus voor één gebruiker, kan elk lid van de lokale beheerdersgroep verbinding maken met SQL Server als lid van de sysadmin vaste serverfunctie. Zie Verbinding maken met SQL Server wanneer systeembeheerders zijn vergrendeldvoor meer informatie.
Wanneer u een exemplaar van SQL Server start in de modus voor één gebruiker:
- Slechts één gebruiker kan verbinding maken met de server.
- Het
CHECKPOINT
proces wordt niet uitgevoerd. Deze wordt standaard automatisch uitgevoerd bij het opstarten.
De SQL Server-service stoppen
Met de volgende opdracht wordt het SQL Server-exemplaar gestopt als het momenteel wordt uitgevoerd:
systemctl stop mssql-server
Huidige gebruiker wijzigen in mssql
SQL Server op Linux wordt uitgevoerd onder de
mssql
gebruiker, dus u moet eerst overschakelen naar deze gebruiker. U wordt gevraagd om hetroot
wachtwoord bij het uitvoeren van deze opdracht.su mssql
SQL Server starten in de modus voor één gebruiker
Wanneer u de optie
-m
metSQLCMD
gebruikt, kunt u de verbindingen met een opgegeven clienttoepassing beperken (SQLCMD
moet in hoofdletters worden geplaatst zoals wordt weergegeven):/opt/mssql/bin/sqlservr -m"SQLCMD"
In het vorige voorbeeld beperkt
-m"SQLCMD"
verbindingen met één verbinding en die verbinding moet zich identificeren als het sqlcmd-clientprogramma. Gebruik deze optie wanneer u SQL Server start in de modus voor één gebruiker om eenmaster
database te herstellen.Wanneer SQL Server wordt gestart, worden er verschillende logboekvermeldingen gegenereerd. U kunt bevestigen dat deze wordt uitgevoerd in de modus voor één gebruiker door te zoeken naar de volgende regels in de uitvoer:
[...] 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.
Verbinding maken met het SQL Server-exemplaar
Gebruik sqlcmd- om verbinding te maken met het SQL Server-exemplaar. Nadat u de stappen hebt uitgevoerd die worden beschreven in de SQL Server starten in de modus voor één gebruiker, ziet u dat SQL Server wordt uitgevoerd in interactieve-modus. U moet dus als volgt een nieuwe terminalsessie openen om sqlcmd- te starten.
/opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <password>
In het vorige voorbeeld is
<ServerName>
de naam van de host waarop SQL Server wordt uitgevoerd als u extern verbinding maakt. Als u rechtstreeks verbinding maakt op de host waarop SQL Server wordt uitgevoerd, kunt u deze parameter overslaan oflocalhost
gebruiken.<StringPassword>
is het wachtwoord voor het SA--account.
De master
-database herstellen
Voer de volgende opdrachten uit in sqlcmd-. Houd er rekening mee dat sqlcmd verwacht dat
GO
aan het einde van het script staat om het uit te voeren.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
In het vorige voorbeeld is het pad van het back-upbestand van de
master
-database/var/opt/mssql/data/master.bak
. U moet deze waarde vervangen door het juiste pad naar uwmaster
databaseback-upbestand.Als de herstelbewerking is geslaagd, ziet u uitvoer die vergelijkbaar is met het volgende voorbeeld.
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.
De SQL Server-service opnieuw starten
Voer de volgende opdracht uit om SQL Server opnieuw op te starten.
systemctl start mssql-server
Opmerkingen
Wanneer u een master
databaseback-up herstelt, zijn bestaande gebruikersdatabases die zijn toegevoegd aan het exemplaar nadat de back-up is gemaakt, niet zichtbaar na het herstellen van master
. De bestanden moeten nog steeds aanwezig zijn op de opslaglaag, dus u moet deze gebruikersdatabasebestanden handmatig opnieuw koppelen om deze databases online te brengen. Zie Een database koppelenvoor meer informatie.