Delen via


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

  1. Met de volgende opdracht wordt het SQL Server-exemplaar gestopt als het momenteel wordt uitgevoerd:

    systemctl stop mssql-server
    

Huidige gebruiker wijzigen in mssql

  1. SQL Server op Linux wordt uitgevoerd onder de mssql gebruiker, dus u moet eerst overschakelen naar deze gebruiker. U wordt gevraagd om het root wachtwoord bij het uitvoeren van deze opdracht.

    su mssql
    

SQL Server starten in de modus voor één gebruiker

  1. Wanneer u de optie -m met SQLCMDgebruikt, 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 een master database te herstellen.

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

  1. 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 of localhostgebruiken. <StringPassword> is het wachtwoord voor het SA--account.

De master-database herstellen

  1. 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 uw master databaseback-upbestand.

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

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