Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No SQL Server, você pode 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 . Esse método se aplica à movimentação de arquivos de banco de dados na mesma instância do SQL Server. Para mover um banco de dados para outra instância do SQL Server ou para outro servidor, use operações de backup e restauração ou desanexação e anexação.
Considerações
Ao mover um banco de dados para outra instância de servidor, para fornecer uma experiência consistente para usuários e aplicativos, talvez seja necessário recriar alguns ou todos os metadados do banco de dados. Para obter mais informações, confira Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server).
Alguns recursos do Mecanismo de Banco de Dados do SQL Server alteram a maneira como o Mecanismo de Banco de Dados armazena informações nos arquivos de banco de dados. Esses recursos são restritos a edições específicas do SQL Server. Um banco de dados que contém esses recursos não pode ser movido para uma edição do SQL Server que não dá suporte a eles. Use a visão de gerenciamento dinâmico sys.dm_db_persisted_sku_features para listar todas as funcionalidades específicas da edição que estão habilitadas no banco de dados atual.
Os procedimentos neste tópico exigem o nome lógico dos arquivos de banco de dados. Para obter o nome, consulte a coluna de nome na exibição de catálogo sys.master_files.
A partir do SQL Server 2008 R2, os catálogos de texto completo são integrados ao banco de dados em vez de serem armazenados no sistema de arquivos. Os catálogos de texto completo agora são movidos automaticamente quando você move um banco de dados.
Procedimento de realocação planejada
Para mover um arquivo de dados ou log como parte de uma realocação planejada, siga estas etapas:
Execute a seguinte instrução.
ALTER DATABASE database_name SET OFFLINE;Mova o arquivo ou os arquivos para o novo local.
Para cada arquivo movido, execute a instrução a seguir.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );Execute a seguinte instrução.
ALTER DATABASE database_name SET ONLINE;Verifique a alteração do arquivo executando a consulta a seguir.
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 agendada de disco
Para realocar um arquivo como parte de um processo de manutenção de disco agendado, siga estas etapas:
Para que cada arquivo seja movido, execute a instrução a seguir.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );Interrompa a instância do SQL Server ou desligue o sistema para executar a manutenção. Para obter mais informações, consulte Iniciar, Parar, Pausar, Retomar, Reiniciar o Mecanismo de Banco de Dados, o Agente do SQL Server ou o Serviço de Navegador do SQL Server.
Mova o arquivo ou os arquivos para o novo local.
Reinicie a instância do SQL Server ou do servidor. Para obter mais informações, consulte Iniciar, Parar, Pausar, Retomar, Reiniciar o Mecanismo de Banco de Dados, Agente do SQL Server ou Serviço de Navegador do SQL Server
Verifique a alteração do arquivo executando a consulta a seguir.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Procedimento de recuperação de falha
Se um arquivo precisar ser movido devido a uma falha de hardware, use as etapas a seguir para realocar o arquivo para um novo local.
Importante
Se o banco de dados não puder ser iniciado, ou seja, ele estará no modo suspeito ou em um estado não recuperado, somente membros da função fixa sysadmin poderão mover o arquivo.
Interrompa a instância do SQL Server se estiver iniciada.
Inicie a instância do SQL Server no modo de recuperação somente mestre inserindo um dos comandos a seguir no prompt de comando.
Para a instância padrão (MSSQLSERVER), execute o comando a seguir.
NET START MSSQLSERVER /f /T3608Para uma instância nomeada, execute o comando a seguir.
NET START MSSQL$instancename /f /T3608
Para obter mais informações, consulte Iniciar, Parar, Pausar, Retomar, Reiniciar o Mecanismo de Banco de Dados, o Agente do SQL Server ou o Serviço de Navegador do SQL Server.
Para que cada arquivo seja movido, use comandos sqlcmd ou SQL Server Management Studio para executar a instrução a seguir.
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 , consulte Usar o Utilitário sqlcmd.
Saia do utilitário sqlcmd ou do SQL Server Management Studio.
Interrompa a instância do SQL Server.
Mova o arquivo ou os arquivos para o novo local.
Inicie a instância do SQL Server. Por exemplo, execute:
NET START MSSQLSERVER.Verifique a alteração do arquivo executando a consulta a seguir.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Exemplos
O exemplo a seguir move o arquivo de log AdventureWorks2012 para um novo local como parte de uma realocação planejada.
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ém
ALTERAR BASE DE DADOS (Transact-SQL)
CRIAR BANCO DE DADOS (SQL Server Transact-SQL)
Anexar e desanexar o banco de dados (SQL Server)
Mover bancos de dados do sistema
Mover arquivos de banco de dados
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
Iniciar, Parar, Pausar, Retomar, Reiniciar o Mecanismo de Banco de Dados, o SQL Server Agent ou o Serviço de Navegador do SQL Server