Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
CHECKPOINTproces 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
mssqlgebruiker, dus u moet eerst overschakelen naar deze gebruiker. U wordt gevraagd om hetrootwachtwoord bij het uitvoeren van deze opdracht.su mssql
SQL Server starten in de modus voor één gebruiker
Wanneer u de optie
-mmetSQLCMDgebruikt, kunt u de verbindingen met een opgegeven clienttoepassing beperken (SQLCMDmoet 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 eenmasterdatabase 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 oflocalhostgebruiken.<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
GOaan 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; GOIn 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 uwmasterdatabaseback-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.