Anexar uma base de dados
Aplica-se a:SQL Server
Este artigo descreve como anexar um banco de dados no SQL Server com o SQL Server Management Studio ou Transact-SQL. Você pode usar esse recurso para copiar, mover ou atualizar um banco de dados do SQL Server.
Limitações e restrições
Para obter uma lista de limitações e restrições, consulte Separar e Anexar Base de Dados (SQL Server).
Pré-requisitos
Analise todos os seguintes pré-requisitos antes de prosseguir:
No caso em que você estiver movendo um banco de dados de uma instância para outra, o banco de dados deve primeiro ser desanexado de qualquer instância SQL existente. Se você tentar anexar um banco de dados que não foi desanexado retornará um erro. Para obter mais informações, consulte Desanexar um banco de dados.
Quando você anexa um banco de dados, todos os arquivos de dados para o banco de dados devem estar disponíveis. Muitas vezes, esses arquivos têm extensões .mdf ou .ndf (para arquivos de dados) e .ldf (para arquivos de log de transações). Além disso, todos os grupos de arquivos para dados FILESTREAM devem estar presentes e disponíveis. Para obter mais informações sobre como anexar um database habilitado para FILESTREAM, consulte Mover uma FILESTREAM-Enabled Base de Dados.
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.
A conta de serviço do Mecanismo de Banco de Dados deve ter permissões para ler os arquivos em seu novo local.
Se os arquivos MDF e LDF estiverem em diretórios diferentes e um dos caminhos incluir
\\?\GlobalRoot
, quando você anexar um banco de dados, a operação falhará.
O Attach é a melhor escolha?
Recomendamos que você mova bancos de dados dentro de uma instância com o procedimento de realocação planejada ALTER DATABASE
em vez de desanexar e anexar ao mover arquivos de banco de dados dentro da mesma instância. Para obter mais informações, consulte Mover bancos de dados de usuários.
Não é recomendável usar desanexar e anexar para backup e recuperação. Não há backups de log de transações ou recuperação point-in-time disponíveis ao desanexar arquivos para backup externo do SQL Server.
Segurança
As permissões de acesso a arquivos são definidas durante muitas operações de banco de dados, inclusive quando um banco de dados é desanexado e anexado. Quando um banco de dados é desanexado ou anexado, o Mecanismo de Banco de Dados tenta representar a conta do Windows da conexão executando a operação para garantir que a conta tenha permissão para acessar o banco de dados e os arquivos de log. Para contas de segurança mistas que usam logons do SQL Server, a representação pode falhar.
A tabela a seguir mostra as permissões definidas no banco de dados e nos arquivos de log após a conclusão de uma operação de anexação ou desanexação e se a conta de conexão pode ser representada pelo Mecanismo de Banco de Dados.
Funcionamento | A conta de conexão pode ser falsificada | As permissões de arquivos são concedidas a |
---|---|---|
Desprender | Sim | Apenas a conta que executa a operação. Contas adicionais podem ser adicionadas por um administrador do sistema operacional, se forem necessárias depois que o banco de dados for desanexado. |
Desprender | Não | A conta de serviço do SQL Server (MSSQLSERVER) e os membros do grupo local de Administradores do Windows. |
Anexar | Sim | A conta de serviço do SQL Server (MSSQLSERVER) e os membros do grupo local de Administradores do Windows. |
Anexar | Não | A conta de serviço do SQL Server (MSSQLSERVER). |
Para obter mais informações sobre as permissões do sistema de arquivos concedidas aos SIDs por serviço para o serviço SQL Server, consulte Configurar permissões do sistema de arquivos para acesso ao mecanismo de banco de dados.
Atenção
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. Para obter mais informações sobre como anexar bancos de dados e informações sobre alterações feitas em metadados quando você anexa um banco de dados, consulte Database Detach and Attach (SQL Server).
Permissões
Requer permissão CREATE DATABASE
, CREATE ANY DATABASE
ou ALTER ANY DATABASE
.
Usar o SQL Server Management Studio (SSMS)
Antes de mover um banco de dados
Se você estiver movendo um banco de dados, antes de desanexá-lo de sua instância existente do SQL Server, use a página Propriedades do Banco de Dados para revisar os arquivos associados ao banco de dados e seus locais atuais.
No Pesquisador de Objetos do SQL Server Management Studio, conecte-se à instância do Mecanismo de Banco de Dados do SQL Server e expanda a instância.
Expanda Bancos de Dadose selecione o nome do banco de dados de usuário que deseja desanexar.
Clique com o botão direito do mouse no nome do banco de dados, selecione Propriedades. Selecione a página Arquivos e revise as entradas na tabela Database files:.
Certifique-se de contabilizar todos os arquivos associados ao banco de dados antes de desanexar, mover e anexar. Em seguida, prossiga com as etapas de desanexar, copiar arquivo e anexar banco de dados na próxima seção. Para obter mais informações, consulte Desanexar um banco de dados.
Anexar uma base de dados
No SQL Server Management Studio Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e selecione para expandir essa exibição de instância no SSMS.
Clique com o botão direito em Bancos de Dados e selecione Anexar .
Na caixa de diálogo Anexar Bancos de Dados, para especificar o banco de dados a ser anexado, selecione Adicionar. Na caixa de diálogo Localizar Arquivos de Banco de Dados, selecione o local onde o banco de dados reside e expanda a árvore de diretórios para localizar e selecionar o arquivo .mdf do banco de dados; Por exemplo:
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf
Importante
Tentar selecionar um banco de dados que já está anexado gera um erro.
Bases de dados a anexar
Exibe informações sobre os bancos de dados selecionados.<nenhum cabeçalho de coluna>
Exibe um ícone indicando o status da operação de anexação. Os ícones possíveis são descritos na descrição do Status.Localização do Arquivo MDF
Exibe o caminho e o nome do arquivo MDF selecionado.Nome do banco de dados
Exibe o nome do banco de dados.Anexar como
Opcionalmente, especifica um nome diferente para anexar o banco de dados como.Proprietário
Fornece uma lista suspensa de possíveis proprietários de banco de dados a partir da qual você pode, opcionalmente, selecionar um proprietário diferente.Status
Exibe o status do banco de dados de acordo com a tabela a seguir:Ícone Texto de estado Descrição (Sem ícone) (Sem texto) A operação de anexação não foi iniciada ou pode estar pendente para este objeto. Este é o padrão quando a caixa de diálogo é aberta. Triângulo verde, apontando para a direita Em curso A operação de anexação foi iniciada, mas não está concluída. Marca de verificação verde Sucesso O objeto foi anexado com êxito. Círculo vermelho contendo uma cruz branca Erro A operação anexar encontrou um erro e não foi concluída com êxito. Círculo contendo dois quadrantes pretos (à esquerda e à direita) e dois quadrantes brancos (na parte superior e inferior) Parou A operação de anexação não foi concluída com êxito porque você interrompeu a operação. Círculo contendo uma seta curva apontando no sentido anti-horário Revertido A operação de anexação foi bem-sucedida, mas teve de ser revertida devido a um erro durante a anexação de outro objeto. Mensagem
Exibe uma mensagem em branco ou um hiperlink "Arquivo não encontrado".Adicionar
Encontre os principais arquivos de banco de dados necessários. Quando seleciona um ficheiro .mdf, a informação aplicável é automaticamente preenchida nos respetivos campos das Bases de Dados para anexar grelha.Remover
Remove o ficheiro selecionado da base de dados e adicione-o à grelha.Detalhes da base de dados "<database_name>"
Exibe os nomes dos arquivos a serem anexados. Para verificar ou alterar o nome do caminho de um arquivo, selecione o botão Procurar (...).Observação
Se um arquivo não existir, a coluna Mensagem exibirá "Não encontrado". Se um arquivo de log não for encontrado, ele existe em outro diretório ou foi excluído. Você precisa atualizar o caminho do arquivo nos detalhes do banco de dados na grelha para apontar para o local correto ou remover o arquivo de log da grelha. Se um arquivo de dados .ndf não for encontrado, você precisará atualizar seu caminho na grade para apontar para o local correto.
Nome do arquivo original
Exibe o nome do arquivo anexado pertencente ao banco de dados.Tipo de arquivo
Indica o tipo de arquivo, Data ou Log.Caminho Atual do Ficheiro
Exibe o caminho para o arquivo de banco de dados selecionado. O caminho pode ser editado manualmente.Mensagem
Exibe uma mensagem em branco ou um hiperlink "Arquivo não encontrado".
Utilize Transact-SQL
Antes de mover um banco de dados
Se você estiver movendo um banco de dados, antes que ele seja desanexado de sua instância existente do SQL Server, use a exibição sys.database_files
catálogo do sistema para examinar os arquivos associados ao banco de dados e seus locais atuais. Para obter mais informações, consulte sys.database_files (Transact-SQL).
No SQL Server Management Studio, selecione Nova Consulta para abrir o Editor de Consultas.
Copie o seguinte script Transact-SQL no Editor de Consultas e selecione Executar. Esse script exibe o local dos arquivos de banco de dados físicos. Certifique-se de levar em conta todos os arquivos ao mover o banco de dados via desanexar/anexar.
USE [database_name] GO SELECT type_desc, name, physical_name from sys.database_files;
Certifique-se de contabilizar todos os arquivos associados ao banco de dados antes de desanexar, mover e anexar. Em seguida, prossiga com as etapas de desanexar, copiar arquivo e anexar banco de dados na próxima seção. Para obter mais informações, consulte Desanexar um banco de dados.
Para anexar um banco de dados
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Use a instrução CREATE DATABASE com a cláusula
FOR ATTACH
.Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo anexa todos os arquivos do banco de dados AdventureWorks2022 e renomeia o banco de dados para
MyAdventureWorks
.CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') FOR ATTACH;
Seu banco de dados pode ter arquivos de dados adicionais (geralmente, .mdf ou .ndf) e exigir arquivos adicionais para incluir na instrução
CREATE DATABASE ... FOR ATTACH
. Além disso, todos os grupos de arquivos para dados FILESTREAM também devem ser incluídos na instrução. Para obter mais informações sobre como anexar um banco de dados habilitado para FILESTREAM, consulte Mover um banco de dados FILESTREAM-Enabled.Observação
Como alternativa, pode usar o procedimento armazenado sp_attach_db ou sp_attach_single_file_db. No entanto, esses procedimentos serão removidos em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Recomendamos que você use
CREATE DATABASE ... FOR ATTACH
em vez disso.
Depois de atualizar um banco de dados do SQL Server
Nível de compatibilidade do banco de dados
Depois de atualizar um banco de dados usando o método anexar, o banco de dados fica disponível. O banco de dados será atualizado automaticamente para o nível de versão interna da nova instância. Se o banco de dados tiver índices de texto completo, o processo de atualização os importa, redefine ou reconstrói, dependendo da configuração da propriedade Full-Text Opção de Atualização servidor. Se a opção de atualização estiver definida como de importação ou de reconstrução , os índices de texto completo não estarão disponíveis durante a atualização. Dependendo da quantidade de dados que estão sendo indexados, a importação pode levar várias horas e a reconstrução pode levar até 10 vezes mais. Observe também que, quando a opção de atualização é definida como Importar, se um catálogo de texto completo não estiver disponível, os índices de texto completo associados serão reconstruídos.
Após a atualização, o nível de compatibilidade do banco de dados permanece no nível de compatibilidade antes da atualização, a menos que o nível de compatibilidade anterior não seja suportado na nova versão. Nesse caso, o nível de compatibilidade do banco de dados atualizado é definido como o nível de compatibilidade suportado mais baixo. Por exemplo, se você anexar um banco de dados que era de nível de compatibilidade 90 antes de anexá-lo a uma instância do SQL Server 2019 (15.x), após a atualização, o nível de compatibilidade será definido como 100, que é o nível de compatibilidade com suporte mais baixo no SQL Server 2019 (15.x). Para obter mais informações, consulte ALTER DATABASE Compatibility Level (Transact-SQL).
Captura de Alterações de Dados (CDC)
Se você estiver anexando um banco de dados de uma instância do SQL Server 2014 (12.x) ou anterior, que tinha o Change Data Capture (CDC) habilitado, deverá executar o seguinte comando para atualizar os metadados do Change Data Capture (CDC):
USE <database name>
EXEC sys.sp_cdc_vupgrade
Para obter mais informações, consulte Erro de ao anexar um banco de dados habilitado para CDC a uma instância do SQL Server 2016 ou do SQL Server 2017 no Windows.
Ver também
- Operações de anexação e desanexação de bancos de dados (SQL Server)
- Desanexar um banco de dados
- CREATE DATABASE (SQL Server Transact-SQL)
- Configurar permissões do sistema de arquivos para acesso ao mecanismo de base de dados