Partager via


Restaurer la base de données master sur Linux en mode mono-utilisateur

S’applique à : SQL Server - Linux

Dans certaines circonstances, il peut être nécessaire de restaurer la base de données master sur une instance de SQL Server en mode mono-utilisateur sur Linux. Les scénarios incluent la migration vers une nouvelle instance ou la récupération en raison d’incohérences.

Remarque

SQL Server va s’arrêter automatiquement une fois la restauration terminée. Ce comportement est normal.

La restauration de la base de données master nécessite de démarrer SQL Server en mode mono-utilisateur, en utilisant l’option de démarrage -mà partir de la ligne de commande.

Pour démarrer une instance SQL Server en mode mono-utilisateur sur Windows, consultez Démarrer SQL Server en mode mono-utilisateur.

Prérequis

Le démarrage de SQL Server en mode mono-utilisateur permet aux membres du groupe Administrateurs local de se connecter à SQL Server en tant que membre du rôle serveur fixe sysadmin. Pour plus d’informations, consultez Se connecter à SQL Server quand les administrateurs système n’y ont plus accès.

Lorsque vous démarrez une instance de SQL Server en mode mono-utilisateur, notez les éléments suivants :

  • Un seul utilisateur peut se connecter au serveur.

  • Le processus CHECKPOINT n’est pas exécuté. Par défaut, il est exécuté automatiquement au démarrage.

Arrêter le service SQL Server

  1. La commande suivante arrête l’instance SQL Server si elle est en cours d’exécution :

    systemctl stop mssql-server
    

Changez l’utilisateur actif pour mssql

  1. SQL Server sur Linux s’exécute sous l’utilisateur mssql : vous devez donc d’abord basculer sur cet utilisateur. Vous êtes invité à entrer le mot de passe de root lors de l’exécution de cette commande.

    su mssql
    

Démarrer SQL Server en mode mono-utilisateur

  1. Quand vous utilisez l’option -m avec SQLCMD, vous pouvez limiter les connexions à une application cliente spécifiée (SQLCMD doit être spécifié en majuscules comme indiqué) :

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

    Dans l’exemple précédent, -m"SQLCMD" limite les connexions à une seule connexion, laquelle doit s’identifier elle-même en tant que programme client sqlcmd. Utilisez cette option quand vous démarrez SQL Server en mode mono-utilisateur pour restaurer une base de données master.

  2. Quand SQL Server démarre, il génère plusieurs entrées de journal. Vous pouvez vérifier qu’il s’exécute en mode mono-utilisateur en recherchant les lignes suivantes dans la sortie :

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

Se connecter à l'instance

  1. Utilisez sqlcmd pour vous connecter à l’instance SQL Server :

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

    Dans l’exemple précédent, <ServerName> est le nom de l’hôte exécutant SQL Server si vous vous connectez à distance. Si vous vous connectez directement sur l’hôte où SQL Server est en cours d’exécution, vous pouvez ignorer ce paramètre ou utiliser localhost. <StringPassword> est le mot de passe pour le compte SA.

Restaurer la base de données master

  1. Exécutez les commandes suivantes dans sqlcmd. Rappelez-vous que sqlcmd attend GO à la fin du script pour l’exécuter.

    use [master];
    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
    

    Dans l’exemple précédent, le chemin vers le fichier de sauvegarde de la base de données master est /var/opt/mssql/data/master.bak. Vous devez remplacer cette valeur par le chemin approprié pour votre fichier de sauvegarde de la base de données master.

  2. Vous devez voir une sortie similaire à l’exemple suivant si la restauration réussit.

    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.
    

Redémarrez le service SQL Server

  1. Pour redémarrer SQL Server, exécutez la commande suivante.

    systemctl start mssql-server
    

Remarques

Quand vous restaurez une sauvegarde de la base de données master, toutes les bases de données utilisateur existantes qui ont été ajoutées à l’instance une fois la sauvegarde effectuée ne seront pas visibles après la restauration de master. Les fichiers doivent néanmoins toujours exister sur la couche de stockage : vous devez donc réattacher manuellement ces fichiers de base de données utilisateur pour mettre ces bases de données en ligne. Pour plus d’informations, consultez Attacher une base de données.