Dela via


Återställa huvuddatabasen i Linux i enanvändarläge

gäller för:SQL Server – Linux

Under vissa omständigheter kan du behöva återställa master-databasen på en instans av SQL Server i enanvändarläge i Linux. Scenarier omfattar migrering till en ny instans eller återställning från inkonsekvenser.

Anteckning

SQL Server stängs automatiskt av när återställningen är klar. Det här beteendet är avsiktligt.

Om du vill återställa master databas måste du starta SQL Server i enanvändarläge med startalternativet -m från kommandoraden.

Information om hur du startar en SQL Server-instans i enanvändarläge i Windows finns i Läge för en användare för SQL Server.

Förutsättningar

Om du startar SQL Server i enanvändarläge kan alla medlemmar i den lokala administratörsgruppen ansluta till SQL Server som medlem i sysadmin fast serverroll. För mer information, se Anslut till SQL Server när systemadministratörer är utelåsta.

När du startar en instans av SQL Server i enanvändarläge:

  • Endast en användare kan ansluta till servern.
  • CHECKPOINT-processen körs inte. Som standard körs den automatiskt vid start.

Stoppa SQL Server-tjänsten

  1. Följande kommando stoppar SQL Server-instansen om den körs för närvarande:

    systemctl stop mssql-server
    

Ändra aktuell användare till mssql

  1. SQL Server på Linux körs under den mssql användaren, så du måste växla till den här användaren först. Du uppmanas att ange root lösenord när du kör det här kommandot.

    su mssql
    

Starta SQL Server i enanvändarläge

  1. När du använder alternativet -m med SQLCMDkan du begränsa anslutningarna till ett angivet klientprogram (SQLCMD måste ha versaler som visas):

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

    I föregående exempel begränsar -m"SQLCMD" anslutningar till en enda anslutning och anslutningen måste identifiera sig som sqlcmd klientprogram. Använd det här alternativet när du startar SQL Server i enanvändarläge för att återställa en master databas.

  2. När SQL Server startar genereras flera loggposter. Du kan bekräfta att den körs i enanvändarläge genom att leta efter följande rader i utdata:

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

Ansluta till SQL Server-instansen

  1. Använd sqlcmd för att ansluta till SQL Server-instansen. När du har slutfört stegen som beskrivs i avsnittet Starta SQL Server i enanvändarläge kan du se att SQL Server körs i interaktivt läge. Därför måste du öppna en ny terminalsession för att starta sqlcmd på följande sätt.

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

    I föregående exempel är <ServerName> namnet på servern som kör SQL Server om du ansluter på distans. Om du ansluter direkt till värden där SQL Server körs kan du hoppa över den här parametern eller använda localhost. <StringPassword> är lösenordet för SA-kontot.

Återställa master-databasen

  1. Kör följande kommandon i sqlcmd. Kom ihåg att sqlcmd förväntar sig att GO i slutet av skriptet ska köra det.

    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
    

    I föregående exempel är sökvägen till master databassäkerhetskopieringsfilen /var/opt/mssql/data/master.bak. Du måste ersätta det här värdet med rätt sökväg till din master databassäkerhetskopieringsfil.

  2. Du bör se utdata som liknar följande exempel om återställningen lyckas.

    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.
    

Starta om SQL Server-tjänsten

  1. Starta om SQL Server genom att köra följande kommando.

    systemctl start mssql-server
    

Anmärkningar

När du återställer en master säkerhetskopia av databasen, kommer befintliga användardatabaser som lades till i instansen efter att säkerhetskopian togs inte att visas efter återställningen master. Filerna bör fortfarande finnas på lagringsskiktet, så du måste manuellt återansluta dessa användardatabasfiler för att få dessa databaser online. Mer information finns i Bifoga en databas.