Mover bancos de dados de usuárioMove User Databases

Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions)

No SQL ServerSQL Server, é possível mover os dados, o log e os arquivos de catálogo de texto completo de um banco de dados de usuário para um novo local, especificando o novo local do arquivo na cláusula FILENAME da instrução ALTER DATABASE .In SQL ServerSQL Server, you can move the data, log, and full-text catalog files of a user database to a new location by specifying the new file location in the FILENAME clause of the ALTER DATABASE statement. Esse método é aplicado para mover arquivos do banco de dados dentro da mesma instância do SQL ServerSQL Server.This method applies to moving database files within the same instance SQL ServerSQL Server. Para mover um banco de dados para uma outra instância do SQL ServerSQL Server ou para um outro servidor, use as operações de backup e restauração ou anexar e desanexar.To move a database to another instance of SQL ServerSQL Server or to another server, use backup and restore or detach and attach operations.

ConsideraçõesConsiderations

Ao mover um banco de dados para outra instância do servidor, para oferecer uma experiência consistente aos usuários e aplicativos, talvez seja necessário recriar alguns ou todos os metadados do banco de dados.When you move a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all the metadata for the database. Para obter mais informações, consulte 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 Database Available on Another Server Instance (SQL Server).

Alguns recursos do Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine alteram a maneira como o Mecanismo de Banco de DadosDatabase Engine armazena as informações nos arquivos de banco de dados.Some features of the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine change the way that the Mecanismo de Banco de DadosDatabase Engine stores information in the database files. Esses recursos são restritos a edições específicas do SQL ServerSQL Server.These features are restricted to specific editions of SQL ServerSQL Server. Um banco de dados que contém esses recursos não pode ser movido para uma edição do SQL ServerSQL Server que não dê suporte a eles.A database that contains these features cannot be moved to an edition of SQL ServerSQL Server that does not support them. Use a exibição de gerenciamento dinâmico sys.dm_db_persisted_sku_features para listar todos os recursos específicos de edição habilitados no banco de dados atual.Use the sys.dm_db_persisted_sku_features dynamic management view to list all edition-specific features that are enabled in the current database.

Os procedimentos neste tópico exigem o nome lógico dos arquivos de banco de dados.The procedures in this topic require the logical name of the database files. Para obter o nome, consulte a coluna de nome na exibição de catálogo sys.master_files .To obtain the name, query the name column in the sys.master_files catalog view.

A partir do SQL Server 2008 R2SQL Server 2008 R2, os catálogos de texto completo são integrados no banco de dados em vez de serem armazenados no sistema de arquivos.Starting with SQL Server 2008 R2SQL Server 2008 R2, full-text catalogs are integrated into the database rather than being stored in the file system. Os catálogos de texto completo agora são movidos automaticamente quando você move um banco de dados.The full-text catalogs now move automatically when you move a database.

Procedimento de realocação planejadaPlanned Relocation Procedure

Para mover um arquivo de dados ou de log como parte de uma realocação planejada, execute as seguintes etapas:To move a data or log file as part of a planned relocation, follow these steps:

  1. Execute a seguinte instrução.Run the following statement.

    ALTER DATABASE database_name SET OFFLINE;  
    
  2. Mova o arquivo ou os arquivos para o novo local.Move the file or files to the new location.

  3. Para cada arquivo movido, execute a seguinte instrução.For each file moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );  
    
  4. Execute a seguinte instrução.Run the following statement.

    ALTER DATABASE database_name SET ONLINE;  
    
  5. Execute a consulta a seguir para verificar se houve alteração no arquivo.Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Realocação para manutenção de disco programadaRelocation for Scheduled Disk Maintenance

Para realocar um arquivo como parte de um processo de manutenção de disco programada, execute as seguintes etapas:To relocate a file as part of a scheduled disk maintenance process, follow these steps:

  1. Para cada arquivo a ser movido, execute a seguinte instrução.For each file to be moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );  
    
  2. Pare a instância do SQL ServerSQL Server ou desligue o sistema para realizar a manutenção.Stop the instance of SQL ServerSQL Server or shut down the system to perform maintenance. Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Mova o arquivo ou os arquivos para o novo local.Move the file or files to the new location.

  4. Reinicialize a instância do SQL ServerSQL Server ou o servidor.Restart the instance of SQL ServerSQL Server or the server. Para obter mais informações, veja Iniciar, parar, pausar, retomar, reiniciar o mecanismo de banco de dados, o SQL Server Agent ou o serviço SQL Server BrowserFor more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service

  5. Execute a consulta a seguir para verificar se houve alteração no arquivo.Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Falha no procedimento de recuperaçãoFailure Recovery Procedure

Se um arquivo tiver que ser movido devido à uma falha de hardware, execute as seguintes etapas para realocar o arquivo no novo local.If a file must be moved because of a hardware failure, use the following steps to relocate the file to a new location.

Importante

Se o banco de dados não puder ser inicializado, significa que ele está em modo de suspeição ou em estado não recuperado, e apenas os membros de função fixa sysadmin podem mover o arquivo.If the database cannot be started, that is it is in suspect mode or in an unrecovered state, only members of the sysadmin fixed role can move the file.

  1. Interrompa a instância do SQL ServerSQL Server , se tiver sido iniciado.Stop the instance of SQL ServerSQL Server if it is started.

  2. Inicie a instância do SQL ServerSQL Server no modo somente recuperação mestre, inserindo um dos seguintes comandos no prompt de comando.Start the instance of SQL ServerSQL Server in master-only recovery mode by entering one of the following commands at the command prompt.

    • Para a instância padrão (MSSQLSERVER), execute o seguinte comando.For the default (MSSQLSERVER) instance, run the following command.

      NET START MSSQLSERVER /f /T3608  
      
    • Para uma instância nomeada, execute o seguinte comando.For a named instance, run the following command.

      NET START MSSQL$instancename /f /T3608  
      

    Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Para cada arquivo a ser movido, use comandos sqlcmd ou SQL Server Management StudioSQL Server Management Studio para executar a instrução a seguir.For each file to be moved, use sqlcmd commands or SQL Server Management StudioSQL Server Management Studio to run the following statement.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' );  
    

    Para obter mais informações sobre como usar o utilitário sqlcmd , veja Usar o Utilitário sqlcmd.For more information about how to use the sqlcmd utility, see Use the sqlcmd Utility.

  4. Saia do utilitário sqlcmd ou SQL Server Management StudioSQL Server Management Studio.Exit the sqlcmd utility or SQL Server Management StudioSQL Server Management Studio.

  5. Pare a instância do SQL ServerSQL Server.Stop the instance of SQL ServerSQL Server.

  6. Mova o arquivo ou os arquivos para o novo local.Move the file or files to the new location.

  7. Inicie a instância do SQL ServerSQL Server.Start the instance of SQL ServerSQL Server. Por exemplo, execute NET START MSSQLSERVER.For example, run: NET START MSSQLSERVER.

  8. Execute a consulta a seguir para verificar se houve alteração no arquivo.Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

ExemplosExamples

O exemplo seguinte move o arquivo de log AdventureWorks2012AdventureWorks2012 para um novo local como parte de uma realocação planejada.The following example moves the AdventureWorks2012AdventureWorks2012 log file to a new location as part of a planned relocation.

USE master;  
GO  
-- Return the logical file name.  
SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files  
WHERE database_id = DB_ID(N'AdventureWorks2012')  
    AND type_desc = N'LOG';  
GO  
ALTER DATABASE AdventureWorks2012 SET OFFLINE;  
GO  
-- Physically move the file to a new location.  
-- In the following statement, modify the path specified in FILENAME to  
-- the new location of the file on your server.  
ALTER DATABASE AdventureWorks2012   
    MODIFY FILE ( NAME = AdventureWorks2012_Log,   
                  FILENAME = 'C:\NewLoc\AdventureWorks2012_Log.ldf');  
GO  
ALTER DATABASE AdventureWorks2012 SET ONLINE;  
GO  
--Verify the new location.  
SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files  
WHERE database_id = DB_ID(N'AdventureWorks2012')  
    AND type_desc = N'LOG';  

Consulte TambémSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
Anexar e desanexar bancos de dados (SQL Server) Database Detach and Attach (SQL Server)
Mover bancos de dados do sistema Move System Databases
Mover arquivos de banco de dados Move Database Files
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Iniciar, parar, pausar, retomar, reiniciar o mecanismo de banco de dados, o SQL Server Agent ou o serviço SQL Server BrowserStart, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service