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.
Para restaurar la base de datos master
, debe 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 Modo de usuario único para SQL Server.
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.
Cuando inicia 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
El siguiente comando detiene la instancia de SQL Server si se está ejecutando actualmente:
systemctl stop mssql-server
Cambiar del usuario actual a mssql
SQL Server en Linux se ejecuta en el usuario
mssql
, por lo que primero debe cambiar a este usuario. Se le pide la contraseña deroot
al ejecutar este comando.su mssql
Iniciar SQL Server en modo de usuario único
Cuando se usa la opción
-m
conSQLCMD
, 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 datosmaster
.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
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 usarlocalhost
.<StringPassword>
es la contraseña para la cuenta SA.
Restaurar la base de datos master
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
. Debe reemplazar este valor por la ruta de acceso correcta al archivo de copia de seguridad de la base de datosmaster
.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.
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 debe 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 Attach a Database.