Mover bancos de dados do sistema
Este tópico descreve como mover bancos de dados do sistema em SQL Server. Mover bancos de dados do sistema pode ser útil nas seguintes situações:
Recuperação de falha. Por exemplo, o banco de dados está em modo de suspeição ou foi desligado devido a uma falha de hardware.
Realocação planejada.
Realocação para manutenção de disco programada.
Os procedimentos a seguir se aplicam à 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 as operações de backup e restauração ou desanexação e anexação.
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 .
Importante
Se você mover um banco de dados do sistema e, posteriormente, recriar o banco de dados mestre, será necessário mover o banco de dados do sistema novamente porque a operação de recriação instala todos os bancos de dados do sistema em seus locais padrão.
Neste tópico
Realocação planejada e procedimento de manutenção de disco agendado
Acompanhamento: depois de mover todos os bancos de dados do sistema
Realocação planejada e procedimento de manutenção de disco agendado
Para mover um arquivo de dados de um banco de dados do sistema ou arquivo de log como parte de uma realocação planejada ou operação de manutenção, execute as etapas a seguir. Este procedimento se aplica a todos os bancos de dados do sistema exceto os bancos de dados mestre e Recurso.
Para cada arquivo a ser movido, execute a seguinte instrução.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Pare a instância do SQL Server ou desligue o sistema para realizar a manutenção. Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.
Mova o arquivo ou os arquivos para o novo local.
Reinicialize a instância do SQL Server ou o servidor. Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.
Execute a consulta a seguir para verificar se houve alteração no arquivo.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Se o banco de dados msdb for movido e a instância do SQL Server estiver configurada para Database Mail, conclua estas etapas adicionais.
Verifique se o Service Broker está habilitado para o banco de dados msdb executando a consulta a seguir.
SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';
Para obter mais informações sobre como habilitar o Service Broker, consulte ALTER DATABASE (Transact-SQL).
Verifique se o Database Mail está funcionando, enviando um email de teste.
Falha no procedimento de recuperação
Se um arquivo tiver de ser movido devido à falha de um hardware, siga estas etapas para realocar o arquivo para o novo local. Este procedimento se aplica a todos os bancos de dados do sistema exceto os bancos de dados mestre e Recurso.
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.
Interrompa a instância do SQL Server , se tiver sido iniciado.
Inicie a instância do SQL Server no modo somente recuperação mestre, inserindo um dos seguintes comandos no prompt de comando. Os parâmetros especificados nestes comandos diferenciam maiúsculas e minúsculas. Os comandos falham quando os parâmetros não são especificados como demonstrado.
Para a instância padrão (MSSQLSERVER), execute o seguinte comando:
NET START MSSQLSERVER /f /T3608
Para uma instância nomeada, execute o seguinte comando:
NET START MSSQL$instancename /f /T3608
Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.
Para cada arquivo a ser 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 , veja Usar o Utilitário sqlcmd.
Saia do utilitário sqlcmd ou SQL Server Management Studio.
Pare a instância do SQL Server. Por exemplo, execute
NET STOP MSSQLSERVER
.Mova o arquivo ou os arquivos para o novo local.
Reinicie a instância do SQL Server. Por exemplo, execute
NET START MSSQLSERVER
.Execute a consulta a seguir para verificar se houve alteração no arquivo.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Movendo o banco de dados mestre
Para mover o banco de dados mestre, siga estas etapas.
Pelo menu Iniciar , aponte para Todos os Programas, aponte para Microsoft SQL Server, aponte para Ferramentas de Configuraçãoe clique em SQL Server Configuration Manager.
No nó Serviços SQL Server, clique com o botão direito do mouse na instância do SQL Server (por exemplo, SQL Server (MSSQLSERVER)) e escolha Propriedades.
Na caixa de diálogo Propriedades do SQL Server (instance_name), clique na guia Parâmetros de Inicialização.
Na caixa Parâmetros existentes, selecione o parâmetro -d para mover o arquivo de dados mestre. Clique em Atualizar para salvar a alteração.
Na caixa Especificar um parâmetro de inicialização , altere o parâmetro para o novo caminho do banco de dados mestre.
Na caixa Parâmetros existentes, selecione o parâmetro -l para mover o arquivo de log mestre. Clique em Atualizar para salvar a alteração.
Na caixa Especificar um parâmetro de inicialização , altere o parâmetro para o novo caminho do banco de dados mestre.
O valor do parâmetro para o arquivo de dados deve seguir o parâmetro
-d
e o valor para o arquivo de log deve seguir o parâmetro-l
. O exemplo a seguir mostra os valores de parâmetro da localização padrão do arquivo de dados mestre.-dC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master.mdf
-lC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Se a realocação planejada para o arquivo de dados mestre for
E:\SQLData
, os valores de parâmetros serão alterados da seguinte maneira:-dE:\SQLData\master.mdf
-lE:\SQLData\mastlog.ldf
Interrompa a instância do SQL Server clicando com o botão direito do mouse no nome da instância e escolhendo Parar.
Mova os arquivos do master.mdf e mastlog.ldf para o local novo.
Reinicie a instância do SQL Server.
Verifique a alteração do arquivo para o banco de dados mestre executando a consulta a seguir.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master'); GO
Movendo o banco de dados de recursos
O local do banco de dados de recursos é <drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<Instance_name>\MSSQL\Binn\. O banco de dados não pode ser movido.
Acompanhamento: depois de mover todos os bancos de dados do sistema
Se você moveu todos os bancos de dados do sistema para uma nova unidade ou volume ou para outro servidor com uma letra de unidade diferente, faça as atualizações a seguir.
Altere o caminho do log do SQL Server Agent. Se você não atualizar este caminho, o SQL Server Agent não iniciará.
Altere o local padrão do banco de dados. Criar um novo banco de dados pode falhar se a letra da unidade e do caminho especificados como a localização padrão não existir.
Altere o caminho do log do SQL Server Agent.
No SQL Server Management Studio, em Pesquisador de Objetos, expanda SQL Server Agent.
Clique com o botão direito do mouse em Logs de Erros e clique em Configurar.
Na caixa de diálogo Configurar Logs de Erros do SQL Server Agent , especifique o novo local do arquivo SQLAGENT.OUT. O local padrão é C:\Arquivos de Programas\Microsoft SQL Server\MSSQL12.<>instance_name\MSSQL\Log\.
Altere o local padrão do banco de dados
No SQL Server Management Studio, em Pesquisador de Objetos, clique com o botão direito do mouse no servidor do SQL Server e clique em Propriedades.
Na caixa de diálogo Propriedades do Servidor da caixa de diálogo, selecione Configurações de Banco de Dados.
Em Locais padrão de banco de dados, navegue até o novo local para os arquivos de dados e log.
Pare e inicie o serviço do SQL Server para concluir a alteração.
Exemplos
a. Movendo o banco de dados tempdb
O seguinte exemplo move os arquivos de log e de dados tempdb
para um novo local como parte de uma realocação planejada.
Observação
Como o tempdb é recriado sempre que a instância do SQL Server é iniciada, você não precisa mover fisicamente os dados e os arquivos de log. Os arquivos são criados no local novo quando o serviço é reiniciado na etapa 3. Até que o serviço seja reiniciado, o tempdb continua usando os arquivos de dados e de log no local existente.
Determine os nomes de arquivo lógicos do banco de dados
tempdb
e o seu local atual no disco.SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
Altere o local de cada arquivo usando
ALTER DATABASE
.USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf'); GO
Pare e reinicie a instância do SQL Server.
Verifique a alteração do arquivo.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
Exclua os arquivos
tempdb.mdf
etemplog.ldf
do local original.
Consulte Também
Banco de dados de recursos
Banco de dados tempdb
Banco de dados mestre
Banco de dados msdb
Modelo de banco de dados
Mover bancos de dados de usuário
Mover arquivos de banco de dados
Iniciar, parar, pausar, retomar, reiniciar o mecanismo de banco de dados, o SQL Server Agent ou o serviço SQL Server Browser
ALTER DATABASE (Transact-SQL)
Recompilar bancos de dados do sistema