Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server - Linux
Em determinadas circunstâncias, talvez seja necessário restaurar o banco de dados master em uma instância do SQL Server no modo de usuário único no Linux. Os cenários incluem a migração para uma nova instância ou corrigir inconsistências.
Observação
O SQL Server será desligado automaticamente após a conclusão da restauração. Esse comportamento é por design.
Para restaurar o banco de dados master, você deve iniciar o SQL Server no modo de usuário único, usando a opção de inicialização -m a partir da linha de comando.
Para iniciar uma instância do SQL Server no modo de usuário único no Windows, consulte modo de usuário único para SQL Server.
Pré-requisitos
Iniciar o SQL Server no modo de usuário único permite que qualquer membro do grupo de administradores locais se conecte ao SQL Server como membro da função de servidor fixa sysadmin. Para obter mais informações, consulte Conectar-se ao SQL Server quando os administradores de sistema estão bloqueados.
Quando você inicia uma instância do SQL Server no modo de usuário único:
- Apenas um usuário pode se conectar ao servidor.
- O processo
CHECKPOINTnão é executado. Por padrão, ele é executado automaticamente na inicialização.
Parar o serviço SQL Server
O comando a seguir interrompe a instância do SQL Server se ela estiver em execução no momento:
systemctl stop mssql-server
Alterar o usuário atual para mssql
O SQL Server no Linux é executado sob o
mssqlusuário, então você precisa alternar para esse usuário primeiro. Você será solicitado a fornecer a senharootao executar este comando.su mssql
Iniciar o SQL Server no modo de usuário único
Ao usar a opção
-mcomSQLCMD, você pode limitar as conexões a um aplicativo cliente especificado (SQLCMDdeve ser capitalizado conforme mostrado):/opt/mssql/bin/sqlservr -m"SQLCMD"No exemplo anterior,
-m"SQLCMD"limita conexões a uma única conexão e essa conexão deve se identificar como o programa cliente do sqlcmd. Use essa opção ao iniciar o SQL Server no modo de usuário único para restaurar um banco de dadosmaster.Quando o SQL Server é iniciado, ele gera várias entradas de log. Você pode confirmar que ele está sendo executado no modo de usuário único procurando as seguintes linhas na saída:
[...] 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.
Conectar-se à instância do SQL Server
Use sqlcmd para se conectar à instância do SQL Server. Depois de concluir as etapas descritas na seção Iniciar o SQL Server no modo de usuário único, você pode ver que o SQL Server está sendo executado em modo interativo. Assim, você precisa abrir uma nova sessão de terminal para iniciar sqlcmd da seguinte maneira.
/opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <password>No exemplo anterior,
<ServerName>é o nome do host que executa o SQL Server se você estiver se conectando remotamente. Se você estiver se conectando diretamente no host onde o SQL Server está sendo executado, poderá ignorar esse parâmetro ou usálocalhost.<StringPassword>é a senha da conta SA.
Restaurar o banco de dados master
Execute os seguintes comandos dentro sqlcmd. Lembre-se de que sqlcmd espera
GOno final do script para o executar.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; GONo exemplo anterior, o caminho para o arquivo de backup do banco de dados
masteré/var/opt/mssql/data/master.bak. Você deve substituir esse valor pelo caminho correto para o arquivo de backup do banco de dadosmaster.Deverá ver um resultado semelhante ao exemplo a seguir, se a restauração for bem-sucedida.
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 o serviço SQL Server
Para reiniciar o SQL Server, execute o seguinte comando.
systemctl start mssql-server
Comentários
Quando você restaura um backup de banco de dados master, todos os bancos de dados de usuário existentes que foram adicionados à instância depois que o backup foi feito não ficarão visíveis após a restauração master. Os arquivos ainda devem existir na camada de armazenamento, portanto, você precisa reanexar manualmente esses arquivos de banco de dados do usuário para colocar esses bancos de dados online. Para obter mais informações, consulte Anexar um Banco de Dados.