Como mover um MDF ou LDF de lugar no SQL Server

No artigo de hoje, vamos demonstrar em como mover o banco de dados (arquivo MDF e LDF) de uma pasta para outra no SQL Server.

Se você já teve a necessidade de alterar a pasta de um banco de dados, siga o procedimento abaixo.

Observação Importante: Antes de iniciar o procedimento, verifique se não tem nenhum usuário utilizando a base que será manipulada, por questão de segurança e integridade dos dados!

Observação Importante 2: As queries executadas, tente rodar no master, não rode diretamente na base, pois ela estará em uso.

  1. O primeiro passo é encontrar em que pasta que esta configurado o Banco de Dados, no nosso caso, o banco é chamado de BASE_TESTE, execute a seguinte query (modifique o nome do banco para o seu cenário):
SELECT name, physical_name AS NewLocation, state_desc AS OnlineStatus
FROM sys.master_files  
WHERE database_id = DB_ID(N'BASE_TESTE')  
GO
  1. Ao executar a query acima, ele vai te mostrar em qual caminho que esta os arquivos
Conferindo a pasta

Conferindo a pasta

 

  1. Agora vamos alterar o caminho configurado no SQL Server para a nova pasta
ALTER DATABASE BASE_TESTE   
    MODIFY FILE ( NAME = BASE_TESTE,   
                  FILENAME = 'C:\TOTVS\SQL\BASE_TESTE.mdf');  
GO
 
ALTER DATABASE BASE_TESTE   
    MODIFY FILE ( NAME = BASE_TESTE_log,   
                  FILENAME = 'C:\TOTVS\SQL\BASE_TESTE_Log.ldf');  
GO
  1. Após você executar, terá um resultado similar ao abaixo:
Modificando a pasta

Modificando a pasta

 

  1. Vamos deixar a base OFFLINE para podermos manipular os arquivos, para isso, execute a seguinte query:
ALTER DATABASE BASE_TESTE SET OFFLINE;  
GO
  1. Após executar a query, ela dará o seguinte resultado:
Deixando a base offline

Deixando a base offline

 

  1. Agora mova os arquivos da pasta de origem (que você pegou no passo 1) para a pasta destino (que você definiu no passo 3)
Copiando os arquivos para a nova pasta

Copiando os arquivos para a nova pasta

 

  1. Volte a base para ONLINE, com o seguinte comando:
ALTER DATABASE BASE_TESTE SET ONLINE;  
GO
  1. Se tudo der certo, abaixo um print do resultado
Voltando a base para online

Voltando a base para online

 

  1. Por fim, você pode executar novamente a query do passo 1, para verificar em qual pasta que esta configurado a base de dados:
Conferindo a pasta

Conferindo a pasta

 

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Natanael disse:

    Caro “Dan”, os comandos do SQL Server: detach e atach.
    Mais seguros, evita erros de digitação que o Murphy adora! rs
    Fraternal abraço.

    • Bom dia Natanael, tudo joia?

      Opa, muito obrigado pelo adendo e pelo comentário, foi muita gentileza sua dispor do seu tempo para comentar na nossa página.

      Pensamos em alguma forma de mover o MDF e LDF via comando, mais como curiosidade, claro que voltado para pessoas que possuam mais experiência na execução dos mesmos. Por isso montamos esse artigo.

      Claro que a lei de Murphy pode contribuir para acontecer problemas rs, mas nossa intenção foi só criar um artigo para ajudar outras pessoas com cenários que possam necessitar da execução de comandos.

      Ai se você tiver disponibilidade, e quiser redigir uma forma melhor de fazer esse procedimento para adicionarmos nesse artigo, enviando prints, com dicas de boas práticas envolvendo o ambiente SQL Server, ficaremos agradecidos e iremos modificar nosso artigo, adicionando sua sugestão. Se quiser, pode nos enviar um email: https://terminaldeinformacao.com/contato/

      No mais, agradecemos mais uma vez pelo comentário enviado, e pedimos desculpas por qualquer transtorno causado em nosso artigo.

      Tenha uma ótima e abençoada quinta feira.

      Um grande abraço.

Deixe uma resposta

Terminal de Informação