Anexar e desanexar bancos de dados (SQL Server)Database Detach and Attach (SQL Server)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Os dados e os arquivos de log de transações de um banco de dados podem ser desanexados e, em seguida, reanexados à mesma ou a outra instância do SQL ServerSQL Server.The data and transaction log files of a database can be detached and then reattached to the same or another instance of SQL ServerSQL Server. Desanexar e anexar um banco de dados é útil se você deseja alterar o banco de dados a uma instância diferente do SQL ServerSQL Server no mesmo computador ou mover o banco de dados.Detaching and attaching a database is useful if you want to change the database to a different instance of SQL ServerSQL Server on the same computer or to move the database.

SegurançaSecurity

As permissões de acesso ao arquivo são definidas durante algumas operações de banco de dados, inclusive desanexar ou anexar um banco de dados.File access permissions are set during a number of database operations, including detaching or attaching a database.

Importante

Não é recomendável anexar ou restaurar bancos de dados de origem desconhecida ou não confiável.We recommend that you do not attach or restore databases from unknown or untrusted sources. Esses bancos de dados podem conter um código mal-intencionado que pode executar um código Transact-SQLTransact-SQL inesperado ou provocar erros modificando o esquema ou a estrutura física do banco de dados.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure.
Antes de usar um banco de dados de origem desconhecida ou não confiável, execute DBCC CHECKDB no banco de dados, em um servidor que não seja de produção. Além disso, examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

Desanexando um banco de dadosDetaching a Database

Desanexar um banco de dados remove-o da instância do SQL ServerSQL Server , mas deixa intacto o banco de dados, com seus arquivos de dados e arquivos de log de transações.Detaching a database removes it from the instance of SQL ServerSQL Server but leaves the database intact within its data files and transaction log files. Esses arquivos podem então ser usados para anexar o banco de dados a qualquer instância do SQL ServerSQL Server, inclusive o servidor do qual o banco de dados foi desanexado.These files can then be used to attach the database to any instance of SQL ServerSQL Server, including the server from which the database was detached.

Você não poderá desanexar um banco de dados se alguma das seguintes opções for verdadeira:You cannot detach a database if any of the following are true:

  • O banco de dados está replicado e publicado.The database is replicated and published. Se replicado, o banco de dados não pode estar publicado.If replicated, the database must be unpublished. Antes de poder desanexá-lo, é necessário desabilitar a publicação executando sp_replicationdboption.Before you can detach it, you must disable publishing by running sp_replicationdboption.

    Observação

    Se não for possível usar sp_replicationdboption, você poderá remover a replicação executando sp_removedbreplication.If you cannot use sp_replicationdboption, you can remove replication by running sp_removedbreplication.

  • Há um instantâneo do banco de dados no banco de dados.A database snapshot exists on the database.

    Antes de poder desanexar o banco de dados, você deve descartar todos os seus instantâneos.Before you can detach the database, you must drop all of its snapshots. Para obter mais informações, veja Remover um instantâneo do banco de dados (Transact-SQL).For more information, see Drop a Database Snapshot (Transact-SQL).

    Observação

    Um instantâneo do banco de dados não pode ser desanexado ou anexado.A database snapshot cannot be detached or attached.

  • O banco de dados está sendo espelhado em uma sessão de espelhamento de banco de dados.The database is being mirrored in a database mirroring session.

    O banco de dados não pode ser desanexado, a menos que a sessão seja encerrada.The database cannot be detached unless the session is terminated. Para obter mais informações, veja Removendo o espelhamento de banco de dados (SQL Server).For more information, see Removing Database Mirroring (SQL Server).

  • O banco de dados é suspeito.The database is suspect. Um banco de dados suspeito não pode ser desanexado. Para poder desanexá-lo, você deve colocá-lo em modo de emergência.A suspect database cannot be detached; before you can detach it, you must put it into emergency mode. Para obter mais informações sobre como colocar um banco de dados em modo de emergência, veja ALTER DATABASE (Transact-SQL).For more information about how to put a database into emergency mode, see ALTER DATABASE (Transact-SQL).

  • O banco de dados é um banco de dados de sistema.The database is a system database.

Backup e restauração e desanexaçãoBackup and Restore and Detach

A desanexação de um banco de dados somente leitura perde informações sobre as bases diferenciais de backups diferenciais.Detaching a read-only database loses information about the differential bases of differential backups. Para obter mais informações, veja Backups diferenciais (SQL Server).For more information, see Differential Backups (SQL Server).

Respondendo a erros de desanexaçãoResponding to Detach Errors

Os erros produzidos ao desanexar um banco de dados podem impedir que o banco de dados seja desligado corretamente e que o log de transações seja reconstruído.Errors produced while detaching a database can prevent the database from closing cleanly and the transaction log from being rebuilt. Se você receber uma mensagem de erro, execute as ações corretivas a seguir:If you receive an error message, perform the following corrective actions:

  1. Reanexe todos os arquivos associados ao banco de dados, e não apenas o arquivo primário.Reattach all files associated with the database, not just the primary file.

  2. Resolva o problema que causou a mensagem de erro.Resolve the problem that caused the error message.

  3. Desanexe o banco de dados novamente.Detach the database again.

Anexando um banco de dadosAttaching a Database

Você pode anexar um banco de dados do SQL ServerSQL Server copiado ou desanexado.You can attach a copied or detached SQL ServerSQL Server database. Quando você anexa um banco de dados do SQL Server 2005 (9.x)SQL Server 2005 (9.x) que contém arquivos de catálogo de texto completo a uma instância de servidor do SQL ServerSQL Server , os arquivos de catálogo são anexados de seus locais anteriores junto com os outros arquivos de banco de dados, assim como ocorre no SQL Server 2005 (9.x)SQL Server 2005 (9.x).When you attach a SQL Server 2005 (9.x)SQL Server 2005 (9.x) database that contains full-text catalog files onto a SQL ServerSQL Server server instance, the catalog files are attached from their previous location along with the other database files, the same as in SQL Server 2005 (9.x)SQL Server 2005 (9.x). Para obter mais informações, veja Atualizar pesquisa de texto completo.For more information, see Upgrade Full-Text Search.

Quando você anexa um banco de dados, todos os arquivos de dados (arquivos MDF e NDF) devem estar disponíveis.When you attach a database, all data files (MDF and NDF files) must be available. Se algum arquivo de dados tiver um caminho diferente de quando o banco de dados foi inicialmente criado ou anexado pela última vez, você deverá especificar o caminho atual do arquivo.If any data file has a different path from when the database was first created or last attached, you must specify the current path of the file.

Observação

Se o arquivo de dados primário que está sendo anexado for somente leitura, o Mecanismo de Banco de DadosDatabase Engine presumirá que o banco de dados é somente leitura.If the primary data file being attached is read-only, the Mecanismo de Banco de DadosDatabase Engine assumes that the database is read-only.

Quando um banco de dados criptografado é anexado primeiro a uma instância do SQL ServerSQL Server, o proprietário do banco de dados deve abrir a chave mestra do banco de dados executando a instrução seguinte: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'.When an encrypted database is first attached to an instance of SQL ServerSQL Server, the database owner must open the master key of the database by executing the following statement: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. É recomendável que você habilite a descriptografia automática da chave mestra executando a seguinte instrução: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY.We recommend that you enable automatic decryption of the master key by executing the following statement: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. Para obter mais informações, veja CREATE MASTER KEY (Transact-SQL) e ALTER MASTER KEY (Transact-SQL).For more information, see CREATE MASTER KEY (Transact-SQL) and ALTER MASTER KEY (Transact-SQL).

O requisito para anexar arquivos de log depende, em parte, de o banco de dados ser de leitura e gravação ou apenas leitura:The requirement for attaching log files depends partly on whether the database is read-write or read-only, as follows:

  • Para um banco de dados de leitura e gravação, você pode geralmente anexar um arquivo de log em um novo local.For a read-write database, you can usually attach a log file in a new location. No entanto, em alguns casos, a reanexação de um banco de dados exige seus arquivos de log existentes.However, in some cases, reattaching a database requires its existing log files. Portanto, é importante sempre conservar todos os arquivos de log desanexados, até que o banco de dados tenha sido anexado com êxito sem eles.Therefore, it is important to always keep all the detached log files until the database has been successfully attached without them.

    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 procurará o arquivo no local antigo.If a read-write database has a single log file and you do not specify a new location for the log file, the attach operation looks in the old location for the file. Se for achado, o arquivo de log antigo será usado, independentemente de o banco de dados ter sido desligado corretamente.If it is found, the old log file is used, regardless of whether the database was shut down cleanly. No entanto, se o arquivo de log antigo não for encontrado e se o banco de dados tiver sido desligado corretamente e não tiver nenhuma cadeia de logs ativa, a operação de anexação tentará criar um novo arquivo de log para o banco de dados.However, if the old log file is not found and if the database was shut down cleanly and has no active log chain, the attach operation attempts to build a new log file for the database.

  • Se o arquivo de dados primário que está sendo anexado for somente leitura, o Mecanismo de Banco de DadosDatabase Engine presumirá que o banco de dados é somente leitura.If the primary data file being attached is read-only, the Mecanismo de Banco de DadosDatabase Engine assumes that the database is read-only. Para um banco de dados somente leitura, o arquivo ou arquivos de log devem estar disponíveis no local especificado no arquivo primário do banco de dados.For a read-only database, the log file or files must be available at the location specified in the primary file of the database. Um novo arquivo de log não pode ser criado porque SQL ServerSQL Server não pode atualizar o local de log armazenado no arquivo primário.A new log file cannot be built because SQL ServerSQL Server cannot update the log location stored in the primary file.

Alterações de metadados na anexação de um banco de dadosMetadata Changes on Attaching a Database

Quando um banco de dados somente leitura é desanexado e reanexado, as informações de backup sobre a base diferencial atual são perdidas.When a read-only database is detached and then reattached, the backup information about the current differential base is lost. A base diferencial é o backup completo mais recente de todos os dados no banco de dados ou em um subconjunto dos arquivos ou de grupos de arquivos do banco de dados.The differential base is the most recent full backup of all the data in the database or in a subset of the files or filegroups of the database. Sem a informações de backup de base, o banco de dados master se torna não sincronizado com o banco de dados somente leitura, portanto backups diferenciais utilizados posteriormente podem fornecer resultados inesperados.Without the base-backup information, the master database becomes unsynchronized with the read-only database, so differential backups taken thereafter may provide unexpected results. Portanto, se você estiver usando backups diferenciais com um banco de dados somente leitura, deverá estabelecer uma nova base diferencial obtendo um backup completo após reanexar o banco de dados.Therefore, if you are using differential backups with a read-only database, you should establish a new differential base by taking a full backup after you reattach the database. Para obter informações sobre backups diferenciais, veja Backups diferenciais (SQL Server).For information about differential backups, see Differential Backups (SQL Server).

Na anexação, ocorre inicialização do banco de dados.On attach, database startup occurs. Geralmente, a anexação de um banco de dados coloca-o no mesmo estado em que estava quando foi desanexado ou copiado.Generally, attaching a database places it in the same state that it was in when it was detached or copied. No entanto, as operações de anexação e desanexação desabilitam o encadeamento de propriedades de bancos de dados para o banco de dados.However, attach-and-detach operations both disable cross-database ownership chaining for the database. Para obter informações sobre como habilitar o encadeamento, veja Opção cross db ownership chaining de configuração de servidor.For information about how to enable chaining, see cross db ownership chaining Server Configuration Option.

Importante

Por padrão e por segurança, as opções para is_broker_enabled, is_honor_broker_priority_on e is_db_trustworthy_on são definidas como OFF sempre que o banco de dados está anexado.By default and for security, the options for is_broker_enabled, is_honor_broker_priority_on and is_trustworthy_on are set to OFF whenever the database is attached. Para obter informações sobre como definir essas opções como ON, veja ALTER DATABASE (Transact-SQL).For information about how to set these options on, see ALTER DATABASE (Transact-SQL). Para obter mais informações sobre metadados, veja Gerenciar metadados ao disponibilizar um banco de dados em outro servidor.For more information about metadata, see Manage metadata when making a database available on another server.

Backup e restauração e anexaçãoBackup and Restore and Attach

Como qualquer banco de dados que esteja offline total ou parcialmente, um banco de dados com arquivos de restauração não pode ser anexado.Like any database that is fully or partially offline, a database with restoring files cannot be attached. Se você interromper a sequência de restauração, poderá anexar o banco de dados.If you stop the restore sequence, you can attach the database. Em seguida, você poderá reiniciar a sequência de restauração.Then, you can restart the restore sequence.

Anexando um banco de dados a outra instância do servidorAttaching a Database to Another Server Instance

Importante

Um banco de dados criado por uma versão mais recente do SQL ServerSQL Server não pode ser anexado em versões anteriores.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions. Isso impede o banco de dados seja usado fisicamente com uma versão anterior do Mecanismo de Banco de DadosDatabase Engine.This precludes the database from being physically used with an older version of the Mecanismo de Banco de DadosDatabase Engine. No entanto, isso se relaciona com o estado dos metadados e não afeta o nível de compatibilidade do banco de dados.However, this relates to metadata state and does not affect the database compatibility level. Para obter mais informações, veja Nível de compatibilidade de ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

Quando você anexa um banco de dados a outra instância do servidor, para oferecer uma experiência consistente aos usuários e aplicativos, talvez precise recriar alguns ou todos os metadados para o banco de dados, como logons e trabalhos, na outra instância de servidor.When you attach a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all of the metadata for the database, such as logins and jobs, on the other server instance. Para obter mais informações, veja Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server).For more information, see Manage metadata when making a aatabase available on another server instance (SQL Server).

Tarefas relacionadasRelated Tasks

Para desanexar um banco de dadosTo detach a database

Para anexar um banco de dadosTo attach a database

Para atualizar um banco de dados usando as operações de anexação e desanexaçãoTo upgrade a database using detach and attach operations

Para mover um banco de dados usando as operações de anexação e desanexaçãoTo move a database using detach and attach operations

Para excluir um instantâneo do banco de dadosTo delete a database snapshot

Consulte TambémSee Also

Arquivos e grupos de arquivos do banco de dadosDatabase Files and Filegroups