Compartilhar via


Desanexar e anexar banco de dados (SQL Server)

Os arquivos de log de transações e dados de um banco de dados podem ser desanexados e, em seguida, reanexados à mesma instância ou a outra instância do SQL Server. Desanexar e anexar um banco de dados será útil se você quiser alterar o banco de dados para uma instância diferente do SQL Server no mesmo computador ou mover o banco de dados.

O formato de armazenamento em disco do SQL Server é o mesmo nos ambientes de 64 bits e 32 bits. Portanto, a anexação funciona em ambientes de 32 bits e 64 bits. Um banco de dados desanexado de uma instância de servidor em execução em um ambiente pode ser anexado em uma instância de servidor executada em outro ambiente.

Segurança

As permissões de acesso a arquivos são definidas durante várias operações de banco de dados, incluindo desanexar ou anexar um banco de dados.

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 um código mal-intencionado que pode executar um código Transact-SQL inesperado ou provocar 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 de não produção e examine também o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.

Desanexar um banco de dados

Desanexar um banco de dados o remove da instância do SQL Server, mas deixa o banco de dados intacto dentro de seus arquivos de dados e arquivos de log de transações. Esses arquivos podem então ser usados para anexar o banco de dados a qualquer instância do SQL Server, incluindo o servidor do qual o banco de dados foi desanexado.

Você não poderá desanexar um banco de dados se qualquer um dos seguintes for verdadeiro:

  • O banco de dados é replicado e publicado. Se for replicado, o banco de dados deve ser despublicado. Antes de desanexá-lo, desabilite a publicação executando sp_replicationdboption.

    Observação

    Se você não puder usar sp_replicationdboption, poderá remover a replicação executando sp_removedbreplication.

  • Um instantâneo do banco de dados existe no banco de dados.

    Antes de desanexar o banco de dados, você deve remover todos os seus instantâneos. Para obter mais informações, consulte Drop a Database Snapshot (Transact-SQL).

    Observação

    Um instantâneo de banco de dados não pode ser desanexado ou anexado.

  • O banco de dados está sendo espelhado em uma sessão de espelhamento de banco de dados.

    O banco de dados não pode ser desanexado, a menos que a sessão seja encerrada. Para obter mais informações, veja Removendo o espelhamento de banco de dados (SQL Server).

  • O banco de dados é suspeito. Um banco de dados suspeito não pode ser desanexado; antes de desanexá-lo, você deve colocá-lo no modo de emergência. Para obter mais informações sobre como colocar um banco de dados no modo de emergência, consulte ALTER DATABASE (Transact-SQL).

  • O banco de dados é um banco de dados do sistema.

Backup, restauração e desanexação

Desanexar um banco de dados marcado como somente leitura resulta na perda de informações sobre as bases dos backups diferenciais. Para obter mais informações, consulte Backups Diferenciais (SQL Server).

Respondendo a erros de desanexação

Erros produzidos durante a desanexação de um banco de dados podem impedir que o banco de dados feche de forma limpa e que o log de transações seja recriado. Se você receber uma mensagem de erro, execute as seguintes ações corretivas:

  1. Reanexe todos os arquivos associados ao banco de dados, não apenas o arquivo primário.

  2. Resolva o problema que causou a mensagem de erro.

  3. Desanexe o banco de dados novamente.

Anexando um banco de dados

Você pode anexar um banco de dados do SQL Server copiado ou desanexado. Quando você anexa uma instância de servidor do SQL Server 2014, os arquivos de catálogo são anexados do local anterior junto com os outros arquivos de banco de dados, o mesmo que no SQL Server 2005. Para obter mais informações, consulte Atualizar pesquisa de texto completo.

Quando você anexa um banco de dados, todos os arquivos de dados (arquivos MDF e NDF) devem estar disponíveis. Se qualquer arquivo de dados tiver um caminho diferente de quando o banco de dados foi criado pela primeira vez ou anexado pela última vez, você deverá especificar o caminho atual do arquivo.

Observação

Se o arquivo de dados primário que está sendo anexado for somente leitura, o Mecanismo de Banco de Dados assumirá que o banco de dados é somente leitura.

Quando um banco de dados criptografado é anexado pela primeira vez a uma instância do SQL Server, o proprietário do banco de dados deve abrir a chave mestra do banco de dados executando a seguinte instrução: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. Recomendamos que você ative a descriptografia automática da chave mestra executando a instrução a seguir: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. Para obter mais informações, consulte CREATE MASTER KEY (Transact-SQL) e ALTER MASTER KEY (Transact-SQL).

O requisito para anexar arquivos de log depende, em parte, de se o banco de dados é de leitura e gravação ou somente leitura, da seguinte maneira:

  • Para um banco de dados de leitura e gravação, você geralmente pode anexar um arquivo de log em um novo local. No entanto, em alguns casos, reanexar um banco de dados requer seus arquivos de log existentes. Portanto, é importante sempre manter todos os arquivos de log desanexados até que o banco de dados tenha sido anexado com êxito sem eles.

    Se um banco de dados de leitura e gravação tiver um único arquivo de log e você não especificar um novo local para o arquivo de log, a operação de anexação examinará o local antigo do arquivo. Se for encontrado, o arquivo de log antigo será usado, independentemente de o banco de dados ter sido desligado sem problemas. No entanto, se o arquivo de log antigo não for encontrado e se o banco de dados tiver sido desligado de forma limpa e não tiver nenhuma cadeia de log ativa, a operação de anexação tentará criar um novo arquivo de log para o banco de dados.

  • Se o arquivo de dados primário que está sendo anexado for somente leitura, o SQL Server não poderá atualizar o local de log armazenado no arquivo primário.

Alterações de metadados na anexação de um banco de dados

Quando um banco de dados somente leitura é desanexado e, em seguida, anexado novamente, as informações de backup sobre a base diferencial atual são perdidas. A base diferencial é o backup completo mais recente de todos os dados no banco de dados ou em um subconjunto dos arquivos ou grupos de arquivos do banco de dados. Sem as informações de backup base, o banco de dados mestre fica não sincronizado com o banco de dados somente leitura, portanto, backups diferenciais feitos posteriormente podem fornecer resultados inesperados. Portanto, se você estiver usando backups diferenciais com um banco de dados somente leitura, deverá estabelecer uma nova base diferencial fazendo um backup completo depois de reanexar o banco de dados. Para obter informações sobre backups diferenciais, consulte Backups Diferenciais (SQL Server).

Na anexação, ocorre a inicialização do banco de dados. Geralmente, anexar um banco de dados o coloca no mesmo estado em que estava quando foi desanexado ou copiado. No entanto, as operações de anexação e desanexação desabilitam o encadeamento de propriedade entre bancos de dados para o banco de dados. Para obter informações sobre como habilitar o encadeamento, consulte a opção de configuração do servidor para encadeamento de propriedade entre bancos de dados. Além disso, TRUSTWORTHY é definido como OFF sempre que o banco de dados é anexado. Para obter informações sobre como definir TRUSTWORTHY como ON, consulte ALTER DATABASE (Transact-SQL).

Backup, restauração e anexação

Como qualquer banco de dados totalmente ou parcialmente offline, um banco de dados com arquivos de restauração não pode ser anexado. Se você parar a sequência de restauração, poderá anexar o banco de dados. Em seguida, você pode reiniciar a sequência de restauração.

Anexando um banco de dados a outra instância do servidor

Importante

Um banco de dados criado por uma versão mais recente do SQL Server não pode ser anexado em versões anteriores.

Ao anexar um banco de dados a outra instância de servidor, para fornecer uma experiência consistente a usuários e aplicativos, talvez seja necessário recriar alguns ou todos os metadados do banco de dados, como logons e trabalhos, na outra instância do servidor. Para obter mais informações, confira Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server).

Tarefas Relacionadas

Para desanexar um banco de dados

Para anexar um banco de dados

Para atualizar um banco de dados usando operações de desanexação e anexação

Para mover um banco de dados usando operações de desanexação e anexação

Para excluir um instantâneo de banco de dados

Consulte Também

Arquivos e grupos de arquivos do banco de dados