Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Os ficheiros de dados e registos de transações de uma base de dados podem ser destacados e depois reanexados à mesma ou noutra instância do SQL Server. Desligar e anexar uma base de dados é útil se quiseres mudar a base de dados para uma instância diferente do SQL Server no mesmo computador ou mover a base de dados.
Permissions
As permissões de acesso a ficheiros são definidas durante várias operações de base de dados, incluindo a separação ou anexação de uma base de dados.
Importante
Recomendamos que não anexe nem restaure bases 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 uma base de dados de uma fonte desconhecida ou não confiável, execute o DBCC CHECKDB (Transact-SQL) na base de dados num servidor não de produção e examine também o código, como procedimentos armazenados ou outro código definido pelo utilizador, na base de dados.
Desanexar um banco de dados
A separação de uma base de dados remove-a da instância do SQL Server, mas mantém a base de dados intacta nos seus ficheiros de dados e registos de transações. Estes ficheiros podem então ser usados para ligar a base de dados a qualquer instância do SQL Server, incluindo o servidor do qual a base de dados foi destacada.
Não pode separar uma base de dados se alguma das seguintes afirmações for verdadeira:
A base de dados é replicada e publicada. Se replicada, a base de dados deve não ser publicada. Antes de o poderes remover, tens de desativar a publicação a executar o sp_replicationdboption.
Observação
Se não conseguires usar
sp_replicationdboption, podes remover a replicação executando sp_removedbreplication.Existe um snapshot da base de dados na base de dados.
Antes de poderes separar a base de dados, tens de eliminar todos os seus snapshots. Para obter mais informações, consulte Eliminar um Instantâneo de Banco de Dados (Transact-SQL).
Observação
Um snapshot de base de dados não pode ser destacado ou anexado.
A base de dados faz parte de um grupo de disponibilidade Always On.
A base de dados não pode ser destacada até ser removida do grupo de disponibilidade. Para mais informações, consulte Remover uma base de dados primária de um grupo de disponibilidade Always On.
A base de dados está a ser espelhada numa sessão de espelhamento da base de dados.
A base de dados não pode ser desanexada a menos que a sessão seja terminada. Para mais informações, consulte Remoção do Espelhamento de Base de Dados (SQL Server).
A base de dados é suspeita. Uma base de dados suspeita não pode ser destacada; antes de poder destacá-la, deve colocá-la em modo de emergência. Para mais informações sobre como colocar uma base de dados em modo de emergência, consulte ALTER DATABASE (Transact-SQL).
A base de dados é uma base de dados do sistema.
Fazer backup, restaurar e desanexar
Desanexar uma base de dados em modo de leitura resulta na perda de informação sobre as bases diferenciais dos backups diferenciais. Para obter mais informações, consulte Backups diferenciais (SQL Server).
Responder a erros de desligamento
Erros produzidos durante a separação de uma base de dados podem impedir que esta feche corretamente e que o registo de transações seja reconstruído. Se receber uma mensagem de erro, execute as seguintes ações corretivas:
Reanexe todos os ficheiros associados à base de dados, não apenas o ficheiro principal.
Resolve o problema que causou a mensagem de erro.
Desliga novamente a base de dados.
Anexar uma base de dados
Pode anexar uma base de dados SQL Server copiada ou separada. Quando você anexa um banco de dados do SQL Server 2005 (9.x) que contém arquivos de catálogo de texto completo em uma instância do servidor SQL Server, os arquivos de catálogo são anexados de seu local anterior junto com os outros arquivos de banco de dados, o mesmo que no SQL Server 2005 (9.x). Para obter mais informações, consulte Atualização Full-Text Pesquisa.
Quando anexa uma base de dados, todos os ficheiros de dados (.mdf e .ndf ficheiros) 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 ficheiro de dados primário anexado for apenas de leitura, o Motor de Base de Dados assume que a base de dados é apenas de leitura.
Quando uma base de dados encriptada é anexada pela primeira vez a uma instância do SQL Server, o proprietário da base de dados deve abrir a chave mestra da base de dados (DMK) executando a seguinte instrução: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. Recomendamos que ative a desencriptação automática do DMK executando a seguinte instrução: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. Para mais informações, consulte CRIAR CHAVE MESTRA (Transact-SQL) e ALTERAR CHAVE MESTRA (Transact-SQL).
O requisito para anexar ficheiros de registo depende em parte de a base de dados ser de leitura-escrita ou só de leitura, da seguinte forma:
Para uma base de dados de leitura-escrita, normalmente pode anexar um ficheiro de registo numa nova localização. No entanto, em alguns casos, a reanexação de uma base de dados requer os seus ficheiros de registo existentes. Por isso, é importante manter sempre todos os ficheiros de registo destacados até que a base de dados seja associada com sucesso sem eles.
Se uma base de dados de leitura-escrita tiver um único ficheiro de registo e não especificar uma nova localização para o ficheiro de registo, a operação de anexar procura a localização antiga do ficheiro. Se o ficheiro de registo antigo for encontrado, será utilizado independentemente de a base de dados ter sido desligada de forma limpa. No entanto, se o ficheiro de registo antigo não for encontrado, e se a base de dados foi encerrada corretamente e não tiver uma cadeia de registos ativa, a operação de anexação tenta criar um novo ficheiro de registo para a base de dados.
Se o ficheiro de dados primário anexado for apenas de leitura, o Motor de Base de Dados assume que a base de dados é apenas de leitura. Para uma base de dados de apenas leitura, o ficheiro ou ficheiros de registo devem estar disponíveis na localização especificada no ficheiro primário da base de dados. Um novo ficheiro de registo não pode ser construído porque o SQL Server não consegue atualizar a localização do registo armazenada no ficheiro primário.
Alterações de metadados ao anexar uma base de dados
Quando uma base de dados somente de leitura é desanexada e depois anexada novamente, a informação de backup sobre a base diferencial atual é perdida. A base diferencial é o backup completo mais recente de todos os dados na base de dados ou num subconjunto dos ficheiros ou grupos de ficheiros da base de dados. Sem a informação da cópia de segurança base, a master base de dados torna-se dessincronizada com a base de dados de somente leitura, pelo que as cópias de segurança diferenciais feitas posteriormente podem fornecer resultados inesperados. Portanto, se estiver a usar backups diferenciais com uma base de dados apenas de leitura, deve estabelecer uma nova base diferencial fazendo um backup completo depois de voltar a anexar a base de dados. Para informações sobre backups diferenciais, veja Backups diferenciais (SQL Server).
Ao anexar, ocorre o arranque da base de dados. Geralmente, anexar uma base de dados coloca-a no mesmo estado em que se encontrava quando foi desanexada ou copiada. No entanto, as operações de anexar e separar desativam a cadeia de propriedade cruzada entre bases de dados. Para obter informações sobre como ativar o encadeamento, consulte a opção de configuração do servidor para encadeamento de propriedade cruzada de bases de dados
Importante
Por defeito e para segurança, as opções para is_broker_enabled, is_honor_broker_priority_on e is_trustworthy_on estão definidas como OFF sempre que a base de dados está anexada. Para informações sobre como definir estas opções, consulte ALTER DATABASE (Transact-SQL). Para mais informações sobre metadados, consulte Gerir Metadados ao Disponibilizar uma Base de Dados noutro Servidor.
Fazer backup, restaurar e anexar
Tal como qualquer base de dados total ou parcialmente offline, uma base de dados com ficheiros de restauro não pode ser anexada. Se parares a sequência de restauro, podes anexar a base de dados. Depois, podes reiniciar a sequência de restauro.
Anexar uma base de dados a outra instância de 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. Isto impede que a base de dados seja usada fisicamente com uma versão mais antiga do Motor de Base de Dados. No entanto, isto está relacionado com o estado dos metadados e não afeta o nível de compatibilidade da base de dados. Para obter mais informações, consulte ALTER DATABASE (Transact-SQL) nível de compatibilidade.
Para proporcionar uma experiência consistente a utilizadores e aplicações, quando associa uma base de dados a outra instância de servidor, pode ter de recriar parte ou todos os metadados da base de dados na outra instância do servidor. Estes metadados incluem, tais como, logins e tarefas. Para obter mais informações, consulte Gerenciar metadados ao disponibilizar um banco de dados em outro servidor.
Tarefas relacionadas
| Tarefa | Artigo |
|---|---|
| Desanexar um banco de dados |
-
sp_detach_db (Transact-SQL) - Desanexar uma base de dados |
| Anexar uma base de dados |
-
CRIAR BASE DE DADOS - Anexar uma Base de Dados - sp_attach_db (Transact-SQL) - sp_attach_single_file_db (Transact-SQL) |
| Atualizar uma base de dados usando operações de desligar e anexar | - Atualize uma base de dados usando desanexar e anexar (Transact-SQL) |
| Mover uma base de dados usando operações de desligar e anexar | - Mover uma base de dados usando desanexar e anexar (Transact-SQL) |
| Eliminar um snapshot de base de dados | - Eliminar um Snapshot da Base de Dados (Transact-SQL) |