Partilhar via


Mover um banco de dados usando desanexar e anexar (Transact-SQL)

Aplica-se a:SQL Server

Este tópico descreve como mover um banco de dados desanexado para outro local e anexá-lo novamente à mesma instância de servidor ou a uma instância de servidor diferente no SQL Server. No entanto, recomendamos que você mova bancos de dados usando o procedimento de realocação planejada ALTER DATABASE, em vez de desanexar e anexar. Para obter mais informações, consulte Mover bancos de dados de usuários.

Importante

Recomendamos que você não anexe ou restaure bancos de dados de fontes desconhecidas ou não confiáveis. Esses bancos de dados podem conter código mal-intencionado que pode executar código Transact-SQL não intencional ou causar erros modificando o esquema ou a estrutura física do banco de dados. Antes de usar um banco de dados de uma fonte desconhecida ou não confiável, execute DBCC CHECKDB no banco de dados em um servidor que não seja de produção e também examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.

Tramitação processual

Para mover um banco de dados usando desanexar e anexar

  1. Desanexe o banco de dados. Para obter mais informações, consulte Desanexar um banco de dados.

  2. Em uma janela do Windows Explorer ou do Prompt de Comando do Windows, mova o arquivo ou arquivos de banco de dados desanexados e o arquivo ou arquivos de log para o novo local.

    Você deve mover os arquivos de log, mesmo que pretenda criar novos arquivos de log. Em alguns casos, reanexar um banco de dados requer seus arquivos de log existentes. Portanto, sempre mantenha todos os arquivos de log desanexados até que o banco de dados tenha sido anexado com êxito sem eles.

    Observação

    Se você tentar anexar o banco de dados sem especificar o arquivo de log, a operação de anexação procurará o arquivo de log em seu local original. Se uma cópia do log ainda existir no local original, essa cópia será anexada. Para evitar o uso do arquivo de log original, especifique o caminho do novo arquivo de log ou remova a cópia original do arquivo de log (depois de copiá-lo para o novo local).

  3. Anexe os ficheiros copiados. Para obter mais informações, consulte Anexar um Banco de Dados.

Exemplo

O exemplo seguinte cria uma cópia da base de dados AdventureWorks2025 chamada MyAdventureWorks. As instruções Transact-SQL são executadas em uma janela do Editor de Consultas conectada à instância do servidor à qual está anexada.

  1. Desanexe a base de dados AdventureWorks2025 executando as seguintes instruções Transact-SQL:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'AdventureWorks2022';  
    GO  
    
  2. Usando o método de sua escolha, copie os arquivos de banco de dados (AdventureWorks208R2_Data.mdf e AdventureWorks208R2_log) para: C:\MySQLServer\AdventureWorks208R2_Data.mdf e C:\MySQLServer\AdventureWorks208R2_Log.ldf, respectivamente.

    Importante

    Para um banco de dados de produção, coloque o banco de dados e o log de transações em discos separados.

    Para copiar arquivos pela rede para um disco em um computador remoto, use o nome UNC (convenção universal de nomenclatura) do local remoto. Um nome UNC assume a forma \\Servername\Sharename\Path\Filename. Assim como acontece com a gravação de arquivos no disco rígido local, as permissões apropriadas necessárias para ler ou gravar em um arquivo no disco remoto devem ser concedidas à conta de usuário usada pela instância do SQL Server.

  3. Anexe o banco de dados movido e, opcionalmente, seu log executando as seguintes instruções Transact-SQL:

    USE master;  
    GO  
    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Data.mdf'),  
        (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Log.ldf')  
        FOR ATTACH;  
    GO  
    

    No SQL Server Management Studio, um banco de dados recém-anexado não é imediatamente visível no Pesquisador de Objetos. Para visualizar a base de dados, no Explorador de Objetos, clique em Exibir, e depois Atualizar. Quando o nó Bancos de Dados é expandido no Explorador de Objetos, o banco de dados recém-anexado agora aparece na lista de bancos de dados.

Ver também

Desanexar e Anexar Banco de Dados (SQL Server)