Restauración de la base de datos maestra en Linux en modo de usuario único

Se aplica a:SQL Server: Linux

En determinadas circunstancias, es posible que tenga que restaurar la base de datos master en una instancia de SQL Server en Linux en modo de usuario único. Entre los escenarios se incluyen la migración a una nueva instancia o la recuperación de incoherencias.

Nota

SQL Server se apagará automáticamente una vez completada la restauración. Este comportamiento es así por diseño.

La restauración de la base de datos master requiere iniciar SQL Server en modo de usuario único mediante la opción de inicio-m de la línea de comandos.

Para iniciar una instancia de SQL Server en modo de usuario único en Windows, consulte Iniciar SQL Server en modo de usuario único.

Requisitos previos

Al iniciar SQL Server en modo de usuario único se permite que cualquier miembro del grupo local de administradores del equipo se conecte a la instancia de SQL Server como miembro del rol fijo de servidor sysadmin. Para obtener más información, vea Conectarse a SQL Server cuando los administradores del sistema no tienen acceso.

Tenga en cuenta los siguientes aspectos cuando inicie una instancia de SQL Server en modo de usuario único:

  • Solo se podrá conectar al servidor un único usuario.

  • No se ejecuta el proceso CHECKPOINT. De manera predeterminada, se ejecuta automáticamente en el inicio.

Detener el servicio SQL Server

  1. El siguiente comando detiene la instancia de SQL Server si se está ejecutando actualmente:

    systemctl stop mssql-server
    

Cambiar del usuario actual a mssql

  1. SQL Server en Linux se ejecuta en el usuario mssql, por lo que primero deberá cambiar a este usuario. Se le pedirá la contraseña de root al ejecutar este comando.

    su mssql
    

Iniciar SQL Server en modo de usuario único

  1. Cuando se usa la opción -m con SQLCMD, se pueden limitar las conexiones a una aplicación cliente especificada (SQLCMD debe escribirse en mayúsculas como se indica):

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

    En el ejemplo anterior -m"SQLCMD" limita las conexiones a una conexión única y esa conexión se debe identificar como el programa cliente sqlcmd. Use esta opción al iniciar SQL Server en modo de usuario único para restaurar una base de datos master.

  2. Cuando se inicia SQL Server, se generan varias entradas de registro. Para confirmar que se está ejecutando en modo de usuario único, busque las siguientes líneas en la salida:

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

Conexión con la instancia de SQL Server

  1. Use sqlcmd para conectarse a la instancia de SQL Server:

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

    En el ejemplo anterior, <ServerName> es el nombre del host que ejecuta SQL Server si se conecta de forma remota. Si se conecta directamente en el host en el que se ejecuta SQL Server, puede omitir este parámetro o usar localhost. <StringPassword> es la contraseña para la cuenta SA.

Restaurar la base de datos master

  1. Ejecute los comandos siguientes dentro de sqlcmd. Recuerde que sqlcmd espera GO al final del script para ejecutarlo.

    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
    

    En el ejemplo anterior, la ruta de acceso al archivo de copia de seguridad de base de datos master es /var/opt/mssql/data/master.bak. Deberá reemplazar este valor por la ruta de acceso correcta al archivo de copia de seguridad de la base de datos master.

  2. Debería ver una salida similar al ejemplo siguiente, si la restauración se realiza correctamente.

    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.
    

Reinicie el servicio de SQL Server.

  1. Reinicie SQL Server con el siguiente comando.

    systemctl start mssql-server
    

Observaciones

Al restaurar una copia de seguridad de base de datos master, las bases de datos de usuario existentes que se han agregado a la instancia después de realizar la copia de seguridad no serán visibles después de restaurar master. Cabe esperar que los archivos sigan existiendo en la capa de almacenamiento, por lo que deberá volver a adjuntar manualmente esos archivos de base de datos de usuario para poner esas bases de datos en línea. Para obtener más información, consulte Adjuntar una base de datos.