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 em Linux
O recurso de backup e restauração do SQL Server é a maneira recomendada de migrar um banco de dados do SQL Server no Windows para o SQL Server no Linux. Neste tutorial, você percorre as etapas necessárias para mover um banco de dados para o Linux com técnicas de backup e restauração.
- Crie um ficheiro de backup no Windows com o SQL Server Management Studio (SSMS)
- Instalar um shell Bash no Windows
- Mover o ficheiro de backup para Linux a partir do shell do Bash
- Restaurar o ficheiro de backup no Linux com Transact-SQL (T-SQL)
- Executar uma consulta para verificar a migração
Você também pode criar um Grupo de Disponibilidade Always On do SQL Server para migrar um banco de dados do SQL Server do Windows para o Linux. Veja Configurar o grupo de disponibilidade Always On do SQL Server no Windows e Linux (multiplataforma).
Pré-requisitos
Os seguintes pré-requisitos são necessários para concluir este tutorial:
Em uma máquina Windows:
- SQL Server instalado.
- SQL Server Management Studio instalado.
- Banco de dados de destino a ser migrado.
Em uma máquina Linux:
- SQL Server (Red Hat Enterprise Linux, SUSE Linux Enterprise Serverou Ubuntu) com ferramentas de linha de comando.
Note
A partir do SQL Server 2025 (17.x), o SUSE Linux Enterprise Server (SLES) não é suportado.
Criar um backup no Windows
Há várias maneiras de criar um arquivo de backup de um banco de dados no Windows. As etapas a seguir usam o SQL Server Management Studio (SSMS).
Inicie SQL Server Management Studio em sua máquina Windows.
Na caixa de diálogo de conexão, digite localhost.
No Pesquisador de Objetos, expanda Bancos de Dados.
Clique com o botão direito do rato na base de dados de destino, selecione Tarefase, em seguida, selecione Cópia de Segurança....
Na caixa de diálogo Cópia de Segurança da Base de Dados, verifique se a opção Tipo de cópia de segurança está definida como Completa e se a opção Efetuar cópia de segurança para está definida como Disco. Note o nome e a localização do ficheiro. Por exemplo, um banco de dados chamado
YourDBno SQL Server 2019 (15.x) tem um caminho de backup padrão deC:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak.Selecione OK para fazer backup do banco de dados.
Outra opção é executar uma consulta T-SQL para criar o ficheiro de backup. O seguinte comando T-SQL executa as mesmas ações dos passos anteriores para uma base de dados chamada YourDB:
BACKUP DATABASE [YourDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak'
WITH NOFORMAT, NOINIT, NAME = N'YourDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
GO
Instalar um shell Bash no Windows
Para restaurar o banco de dados, você deve primeiro transferir o arquivo de backup da máquina Windows para a máquina Linux de destino. Neste tutorial, movemos o ficheiro para Linux a partir de um shell Bash (janela de terminal) a correr no Windows.
Instala um shell Bash na tua máquina Windows que suporte os comandos scp (cópia segura) e ssh (início de sessão remoto). Dois exemplos incluem:
Abra uma sessão Bash no Windows.
Copie o arquivo de backup para Linux
Na tua sessão Bash, navega até ao diretório que contém o teu ficheiro de backup. Por exemplo:
cd 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\'Use o comando scp para transferir o arquivo para a máquina Linux de destino. O exemplo a seguir transfere
YourDB.bakpara o diretório base douser1no servidor Linux com um endereço IP de 192.168.2.9:scp YourDB.bak user1@192.168.2.9:./Aqui está a saída esperada:
The authenticity of host '192.168.2.9 (192.168.2.9)' can't be established. ECDSA key fingerprint is SHA256: aB1cD2eF-3gH4iJ5kL6-mN7oP8qR= Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.9' (ECDSA) to the list of known hosts. Password: YourDB.bak 100% 8960KB 7.4MB/s 00:01
Tip
Existem alternativas ao uso de scp para transferência de arquivos. Uma delas é usar Samba para configurar um compartilhamento de rede SMB entre Windows e Linux. Para obter um passo a passo sobre o Ubuntu, consulte Samba como um servidor de arquivos. Uma vez estabelecido, pode-se aceder a ele como uma partilha de ficheiros de rede no Windows, tal como \\machinenameorip\share.
Mova o arquivo de backup antes de restaurar
Neste ponto, o arquivo de backup está no seu servidor Linux no diretório inicial do usuário. Antes de restaurar o banco de dados para o SQL Server, você deve colocar o backup em um subdiretório do /var/opt/mssql, pois esse diretório pertence ao usuário mssql e ao grupo mssql. Se você estiver procurando alterar o local de backup padrão, consulte o artigo Configurar com mssql-conf.
Na mesma sessão do Windows Bash, liga-te remotamente à tua máquina Linux de destino através de ssh. O exemplo a seguir se conecta à máquina Linux
192.168.2.9como usuáriouser1.ssh user1@192.168.2.9Agora você está executando comandos no servidor Linux remoto.
Entre no modo de superusuário.
sudo suCrie um novo diretório de backup. O parâmetro
-pnão faz nada se o diretório já existir.mkdir -p /var/opt/mssql/backupMova o arquivo de backup para esse diretório. No exemplo a seguir, o arquivo de backup reside no diretório base do
user1. Altere o comando para corresponder ao local e ao nome do arquivo de backup.mv /home/user1/YourDB.bak /var/opt/mssql/backup/Saia do modo de superusuário.
exit
Restaure seu banco de dados no Linux
Para restaurar a cópia de segurança da base de dados, pode usar o RESTORE DATABASE comando T-SQL.
Os passos seguintes utilizam a sqlcmd ferramenta. Se você ainda não instalou as ferramentas do SQL Server, consulte Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux.
No mesmo terminal, lança
sqlcmd. O exemplo a seguir se conecta à instância local do SQL Server com a contasa. Digite a senha quando solicitado ou especifique a senha adicionando o parâmetro-P.sqlcmd -S localhost -U saNo prompt
>1, digite o seguinte comandoRESTORE DATABASE, pressionando ENTER após cada linha (não é possível copiar e colar todo o comando de várias linhas de uma só vez). Substitua todas as ocorrências deYourDBpelo nome do seu banco de dados.RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'; GODeverias receber uma mensagem a indicar que a base de dados foi restaurada com sucesso.
RESTORE DATABASEpode retornar um erro como o exemplo a seguir:File 'YourDB_Product' cannot be restored to 'Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf'. Use WITH MOVE to identify a valid location for the file. Msg 5133, Level 16, State 1, Server servername, Line 1 Directory lookup for the file "Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf" failed with the operating system error 2(The system cannot find the file specified.).Nesse caso, o banco de dados contém arquivos secundários. Se esses arquivos não forem especificados na cláusula
MOVEdoRESTORE DATABASE, o procedimento de restauração tentará criá-los no mesmo caminho do servidor original.Você pode listar todos os arquivos incluídos no backup:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak'; GODeverias obter uma lista como o seguinte exemplo (listando apenas as duas primeiras colunas):
LogicalName PhysicalName .............. ------------------- ---------------------------------------------------------------------------- --------------- YourDB Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB.mdf .............. YourDB_Product Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf .............. YourDB_Customer Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Customer.ndf .............. YourDB_Log Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Log.ldf ..............Você pode usar essa lista para criar cláusulas
MOVEpara os arquivos extras. Neste exemplo, aRESTORE DATABASEé:RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Product' TO '/var/opt/mssql/data/YourDB_Product.ndf', MOVE 'YourDB_Customer' TO '/var/opt/mssql/data/YourDB_Customer.ndf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'; GOVerifique a restauração listando todos os bancos de dados no servidor. O banco de dados restaurado deve ser listado.
SELECT name FROM sys.databases; GOExecute outras consultas no banco de dados migrado. O comando a seguir alterna o contexto para o banco de dados
YourDBe seleciona linhas de uma de suas tabelas.USE YourDB; SELECT * FROM YourTable; GOQuando terminares de usar
sqlcmd, escreveexit.Quando terminar de trabalhar na sessão remota ssh, digite
exitnovamente.
Passo seguinte
Neste tutorial, você aprendeu como fazer backup de um banco de dados no Windows e movê-lo para um servidor Linux executando o SQL Server. Você aprendeu a:
- Use SSMS e T-SQL para criar um ficheiro de backup no Windows
- Instalar um shell Bash no Windows
- Use scp para mover arquivos de backup do Windows para o Linux
- Use ssh para se conectar remotamente à sua máquina Linux
- Realoque o arquivo de backup para se preparar para a restauração
- Usar
sqlcmdpara executar comandos T-SQL - Restaure o backup do banco de dados com o comando
RESTORE DATABASE - Executar uma consulta para verificar a migração
Em seguida, explore outros cenários de migração para o SQL Server no Linux.