3
respostas

Como restaurar backup no Linux?

Estou no Linux Mint Cinnamon 21.3. Tentei o que foi explicado aqui - https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-backup-and-restore-database?view=sql-server-ver16 - e aqui - https://stackoverflow.com/questions/1535914/import-bak-file-to-a-database-in-sql-server. O primeiro fala para usar sqlcmd, o segundo fala para usar o comando RESTORE.

sqlcmd não existe na minha máquina. RESTORE funcionou somente assim:

restore filelistonly
from disk = '/tmp/SUCOS_VENDAS.BAK'

aí mostrou dados do backup. Mas tem arquivos com caminho físico chumbado em "C:\Program Files\Microsoft ...". Ao tentar recuperar mesmo o backup com

restore database
sucos_vendas
from disk = '/r/SUCOS_VENDAS.BAK'

o resultado foi:

Erro SQL [5133] [S0001]: Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\SUCOS_VENDAS.mdf" failed with the operating system error 2(The system cannot find the file specified.).

3 respostas

Olá, André, tudo bem?

Você pode instalar o sqlcmd com os seguintes comandos:

sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev

Depois de instalar o sqlcmd, você pode usá-lo para restaurar o banco de dados. No entanto, como você mencionou, os caminhos dos arquivos no backup estão definidos para Windows. Precisamos redirecionar esses caminhos para locais válidos no seu sistema Linux.

Portanto, tente usar o comando RESTORE DATABASE com a opção MOVE para especificar novos caminhos para os arquivos .mdf e .ldf. Por exemplo, caso queira restaurar os arquivos em /var/opt/mssql/data/, o comando ficaria assim:

RESTORE DATABASE sucos_vendas
FROM DISK = '/tmp/SUCOS_VENDAS.BAK'
WITH MOVE 'SUCOS_VENDAS' TO '/var/opt/mssql/data/SUCOS_VENDAS.mdf',
MOVE 'SUCOS_VENDAS_log' TO '/var/opt/mssql/data/SUCOS_VENDAS_log.ldf';

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, obrigado pela resposta. Ainda não funcionou. Estou tendo estes erros:

Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722.

Oi André,

O erro está relacionado à verificação de certificados SSL no SQL Server.

Antes de tudo, para que que você interaja com o SQL Server diretamente através do terminal ou prompt de comando, certifique de ter instalado as ferramentas de Linha de Comando do SQL Server (sqlcmd). Você pode seguir as instruções da documentação Instalar ferramentas no Linux. A documentação está em inglês, mas você pode utilizar o recurso de tradução automática do navegador.

Depois de instalar o sqlcmd, você pode usar o comando com a opção -C para forçar a confiança no certificado SSL do servidor, mesmo que ele seja autoassinado. Deixo o comando abaixo:

sqlcmd -S <server> -U <username> -P <password> -C
  • -S : Substitua pelo nome ou endereço IP do seu servidor SQL.
  • -U : Substitua pelo seu nome de usuário de login no SQL Server.
  • -P : Substitua pela sua senha.
  • -C: Essa opção instrui o sqlcmd a confiar no certificado SSL do servidor.

Por exemplo:

sqlcmd -S localhost -U sa -P 'YourPassword' -C

Em seguida, tente realizar os comandos de backup .

Espero que dê certo e fico à disposição.