Anexar um banco de dadosAttach a Database

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

Este tópico descreve como anexar um banco de dados no SQL ServerSQL Server usando o SQL Server Management StudioSQL Server Management Studio ou o Transact-SQLTransact-SQL.This topic describes how to attach a database in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Você pode usar este recurso para copiar, mover ou atualizar um banco de dados SQL ServerSQL Server.You can use this feature to copy, move, or upgrade a SQL ServerSQL Server database.

Pré-requisitosPrerequisites

  • O banco de dados primeiro deve ser desanexado.The database must first be detached. A tentativa de anexar um banco de dados que não foi desanexado retornará um erro.Attempting to attach a database that has not been detached will return an error. Para obter mais informações, veja Desanexar um banco de dados.For more information, see Detach a Database.

  • Quando você anexa um banco de dados, todos os arquivos de dados (arquivos MDF e LDF) devem estar disponíveis.When you attach a database, all data files (MDF and LDF 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.

  • Quando você anexar um banco de dados, se os arquivos MDF e LDF estiverem localizados em diretórios diferentes e um dos caminhos incluir \\?\GlobalRoot, a operação falhará.When you attach a database, if MDF and LDF files are located in different directories and one of the paths includes \\?\GlobalRoot, the operation will fail.

Anexar é a melhor opção?Is Attach the best choice?

Recomendamos que você mova os bancos de dados utilizando o procedimento de realocação planejada ALTER DATABASE, em vez de utilizar desanexação e anexação, ao mover arquivos de banco de dados dentro da mesma instância.We recommend that you move databases by using the ALTER DATABASE planned relocation procedure instead of using detach and attach, when moving database files within the same instance. Para obter mais informações, veja Mover bancos de dados de usuário.For more information, see Move User Databases.

Não recomendamos o uso de ações de desanexar e anexar para Backup e Recuperação.We don't recommend using detach and attach for Backup and Recovery. Não há backups de log de transações e é possível excluir arquivos acidentalmente.There are no transaction log backups, and it's possible to accidently delete files.

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. Para obter informações sobre permissões de arquivo definidas sempre que um banco de dados é desanexado e anexado, veja Protegendo dados e arquivos de log nos Manuais Online do SQL Server 2008 R2SQL Server 2008 R2 (ainda é uma leitura válida!)For information about file permissions that are set whenever a database is detached and attached, see Securing Data and Log Files from SQL Server 2008 R2SQL Server 2008 R2 Books Online (Still a valid read!)

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. Para saber mais sobre como anexar bancos de dados e informações sobre alterações que são feitas em metadados ao anexar um banco de dados, veja Anexar e desanexar bancos de dados(SQL Server).For more information about attaching databases and information about changes that are made to metadata when you attach a database, see Database Detach and Attach (SQL Server).

PermissõesPermissions

Requer permissão CREATE DATABASE, CREATE ANY DATABASE ou ALTER ANY DATABASE.Requires CREATE DATABASE, CREATE ANY DATABASE, or ALTER ANY DATABASE permission.

Usando o SQL Server Management StudioUsing SQL Server Management Studio

Para anexar um banco de dadosTo Attach a Database

  1. No Pesquisador de Objetos do SQL Server Management StudioSQL Server Management Studio , conecte-se a uma instância do Mecanismo de Banco de Dados do SQL ServerSQL Server Database Enginee clique para expandir a exibição dessa instância no SSMS.In SQL Server Management StudioSQL Server Management Studio Object Explorer, connect to an instance of the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine, and then click to expand that instance view in SSMS.

  2. Clique com o botão direito do mouse em Bancos de dados e clique em Anexar.Right-click Databases and click Attach.

  3. Na caixa de diálogo Anexar Banco de Dados , para especificar o banco de dados a ser anexado, clique em Adicionar. Na caixa de diálogo Localizar Arquivos de Banco de Dados , selecione a unidade de disco onde o banco de dados reside e expanda a árvore de diretório para localizar e selecionar o arquivo .mdf do banco de dados, por exemplo:In the Attach Databases dialog box, to specify the database to be attached, click Add; and in the Locate Database Files dialog box, select the disk drive where the database resides and expand the directory tree to find and select the .mdf file of the database; for example:

    C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf

    Importante

    Tentar selecionar um banco de dados já anexado gera erro.Trying to select a database that is already attached generates an error.

    Bancos de dados a serem anexadosDatabases to attach
    Exibe informações sobre os bancos de dados selecionados.Displays information about the selected databases.

    <no column header><no column header>
    Exibe um ícone que indica o status da operação de anexação.Displays an icon indicating the status of the attach operation. Os possíveis ícones são descritos em Status , abaixo).The possible icons are described in the Status description, below).

    Local do Arquivo MDFMDF File Location
    Exibe o caminho e o nome de arquivo do arquivo MDF selecionado.Displays the path and file name of the selected MDF file.

    Database NameDatabase Name
    Exibe o nome do banco de dados.Displays the name of the database.

    Anexar comoAttach As
    Opcionalmente, especifique um nome diferente para o banco de dados anexar como.Optionally, specifies a different name for the database to attach as.

    ProprietárioOwner
    Fornece uma lista suspensa de possíveis proprietários de banco de dados dos quais você pode selecionar um proprietário diferente opcionalmente.Provides a drop-down list of possible database owners from which you can optionally select a different owner.

    StatusStatus
    Exibe o status do banco de dados de acordo com a seguinte tabela.Displays the status of the database according to the following table.

    ÍconeIcon Texto de statusStatus text DescriçãoDescription
    (No icon)(No icon) (Nenhum texto)(No text) A operação de anexação não foi iniciada ou pode estar pendente para esse objeto.Attach operation has not been started or may be pending for this object. Esse é o padrão quando a caixa de diálogo é aberta.This is the default when the dialog is opened.
    Triângulo verde apontando para a direitaGreen, right-pointing triangle Em andamentoIn progress A operação de anexação foi iniciada mas não está completa.Attach operation has been started but it is not complete.
    Sinal de verificação verdeGreen check mark ÊxitoSuccess O objeto foi anexado com êxito.The object has been attached successfully.
    Círculo vermelho contendo uma cruz brancaRed circle containing a white cross ErroError A operação de anexação encontrou um erro e não foi concluída com êxito.Attach operation encountered an error and did not complete successfully.
    Círculo que contém dois quadrantes pretos (à esquerda e à direita) e dois quadrantes brancos (em cima e em baixo)Circle containing two black quadrants (on left and right) and two white quadrants (on top and bottom) Stopped (parado)Stopped A operação de anexação não foi completada com êxito porque o usuário interrompeu a operação.Attach operation was not completed successfully because the user stopped the operation.
    Círculo que contém uma seta curvada que aponta para o sentido anti-horárioCircle containing a curved arrow pointing counter-clockwise RevertidaRolled Back A operação de anexação teve êxito, mas foi revertida devido a um erro ao se anexar outro objeto.Attach operation was successful but it has been rolled back due to an error during attachment of another object.

    MensagemMessage
    Exibe uma mensagem em branco ou um hiperlink "Arquivo não encontrado"Displays either a blank message or a "File not found" hyperlink.

    AdicionarAdd
    Encontrar os arquivos de banco de dados principais necessários.Find the necessary main database files. Quando o usuário selecionar um arquivo .mdf , os respectivos campos são automaticamente preenchidos com informações aplicáveis da grade Bancos de dados a serem anexados .When the user selects an .mdf file, applicable information is automatically filled in the respective fields of the Databases to attach grid.

    RemoverRemove
    Remove o arquivo selecionado da grade Bancos de dados a serem anexados .Removes the selected file from the Databases to attach grid.

    " <database_name> " detalhes do banco de dados" <database_name> " database details
    Exibe os nomes dos arquivos a serem anexados.Displays the names of the files to be attached. Para verificar ou alterar o nome do caminho de um arquivo, clique no botão Procurar ( ... ).To verify or change the pathname of a file, click the Browse button (...).

    Observação

    Se um arquivo não existir, a coluna Mensagem exibe "Não encontrado."If a file does not exist, the Message column displays "Not found." Se um arquivo de log não for encontrado, ele existe em outro diretório ou foi excluído.If a log file is not found, it exists in another directory or has been deleted. Você precisa atualizar o caminho do arquivo na grade detalhes do banco de dados para indicar o local correto ou remover o arquivo de log da grade.You need to either update the file path in the database details grid to point to the correct location or remove the log file from the grid. Se um arquivo de dados .ndf não for encontrado, você precisará atualizar seu caminho na grade a fim de indicar o local correto.If an .ndf data file is not found, you need to update its path in the grid to point to the correct location.

    Nome do arquivo originalOriginal File Name
    Exibe o nome do arquivo anexado que pertence ao banco de dados.Displays the name of the attached file belonging to the database.

    Tipo de arquivoFile Type
    Indica o tipo de arquivo, Dados ou Log.Indicates the type of file, Data or Log.

    Caminho do arquivo atualCurrent File Path
    Exibe o caminho para o arquivo de banco de dados selecionado.Displays the path to the selected database file. O caminho pode ser editado manualmente.The path can be edited manually.

    MensagemMessage
    Exibe uma mensagem em branco ou um hiperlink “Arquivo não encontrado”.Displays either a blank message or a "File not found" hyperlink.

Usando o Transact-SQLUsing Transact-SQL

Para anexar um banco de dadosTo attach a database

  1. Conecte-se ao Mecanismo de Banco de DadosDatabase Engine.Connect to the Mecanismo de Banco de DadosDatabase Engine.

  2. Na barra Padrão, clique em Nova Consulta.From the Standard bar, click New Query.

  3. Use a instrução CREATE DATABASE com a cláusula FOR ATTACH.Use the CREATE DATABASE statement with the FOR ATTACH clause.

    Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.Copy and paste the following example into the query window and click Execute. Este exemplo anexa os arquivos do banco de dados AdventureWorks2012AdventureWorks2012 e renomeia o banco de dados como MyAdventureWorks.This example attaches the files of the AdventureWorks2012AdventureWorks2012 database and renames the database to MyAdventureWorks.

    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
        FOR ATTACH;  
    

    Observação

    Se desejar, você poderá usar o procedimento armazenado sp_attach_db ou sp_attach_single_file_db .Alternatively, you can use the sp_attach_db or sp_attach_single_file_db stored procedure. No entanto, esses procedimentos armazenados estendidos são removidos de uma versão futura do Microsoft SQL ServerSQL Server.However, these procedures will be removed in a future version of Microsoft SQL ServerSQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Em vez dessa função, recomendamos usar CREATE DATABASE ... FOR ATTACH .We recommend that you use CREATE DATABASE ... FOR ATTACH instead.

Acompanhamento: Depois de atualizar um banco de dados do SQL ServerFollow Up: After Upgrading a SQL Server Database

Após a atualização de um banco de dados usando o método anexar, o banco de dados se torna logo disponível e é atualizado automaticamente.After you upgrade a database by using the attach method, the database becomes available immediately and is automatically upgraded. Se o banco de dados tiver índices de texto completo, o processo de atualização importará, redefinirá ou recriará esses índices dependendo da configuração da propriedade de servidor Opção de Atualização de Texto Completo .If the database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the Full-Text Upgrade Option server property. Se a opção de atualização for definida como Importar ou Recriar, os índices de texto completo permanecerão indisponíveis durante a atualização.If the upgrade option is set to Import or Rebuild, the full-text indexes will be unavailable during the upgrade. Dependendo da quantidade de dados a serem indexados, a importação pode levar várias horas, e a recriação pode ser até dez vezes mais demorada.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. Lembre-se também de que, quando a opção de atualização estiver definida como Importar, se não houver um catálogo de texto completo disponível, os índices de texto completo associados serão recompilados.Note also that when the upgrade option is set to Import, if a full-text catalog is not available, the associated full-text indexes are rebuilt.

Se o nível de compatibilidade de um banco de dados de usuário for 100 ou mais alto antes da atualização, ele permanecerá o mesmo depois da atualização.If the compatibility level of a user database is 100 or higher before upgrade, it remains the same after upgrade. Se o nível de compatibilidade for 90 ou inferior antes da atualização, no banco de dados atualizado, o nível de compatibilidade será definido como 100, que é o nível de compatibilidade mais baixo com suporte no SQL ServerSQL Server.If the compatibility level is 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL ServerSQL Server. 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).

Observação

Se você estiver conectando um banco de dados de uma instância que está executando o SQL Server 2014 (12.x)SQL Server 2014 (12.x) ou anterior com a CDA (captura de dados de alterações) habilitada, você também precisará executar o comando abaixo para atualizar os metadados da CDA (captura de dados de alterações).If you are attaching a database from an instance running SQL Server 2014 (12.x)SQL Server 2014 (12.x) or below which had Change Data Capture (CDC) enabled, you will also need to execute the command below to upgrade the Change Data Capture (CDC) metadata.

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Consulte TambémSee Also

CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
Gerenciar metadados ao disponibilizar um banco de dados em outro servidorManage metadata when making a database available on another server
Desanexar um banco de dadosDetach a Database