Compartilhar via


Mover bancos de dados do sistema

Este tópico descreve como mover bancos de dados do sistema no 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á no modo suspeito ou foi desligado devido a uma falha de hardware.

  • Realocação planejada.

  • Realocação para manutenção de disco agendada.

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, recompilar o banco de dados mestre, deverá mover o banco de dados do sistema novamente porque a operação de recompilação instala todos os bancos de dados do sistema para o local padrão.

Nesse Tópico

Realocação planejada e procedimento de manutenção de disco agendado

Para mover um arquivo de log ou dados de banco de dados do sistema como parte de uma realocação planejada ou operação de manutenção agendada, siga estas etapas. Esse procedimento se aplica a todos os bancos de dados do sistema, exceto os bancos de dados mestre e de recurso.

  1. 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' )  
    
  2. 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, Agente do SQL Server ou Serviço do Navegador do SQL Server.

  3. Mova o arquivo ou os arquivos para o novo local.

  4. 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, o SQL Server Agent ou o SQL Server Browser Service.

  5. 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>');  
    

Se o banco de dados msdb for movido e a instância do SQL Server estiver configurada para o Database Mail, conclua estas etapas adicionais.

  1. 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).

  2. Verifique se o Database Mail está funcionando enviando um email de teste.

Procedimento de recuperação de falha

Se um arquivo precisar ser movido devido a uma falha de hardware, siga estas etapas para realocar o arquivo para um novo local. Esse procedimento se aplica a todos os bancos de dados do sistema, exceto os bancos de dados mestre e de recurso.

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.

  1. Interrompa a instância do SQL Server se estiver iniciada.

  2. Inicie a instância do SQL Server no modo de recuperação somente mestre inserindo um dos comandos a seguir no prompt de comando. Os parâmetros especificados nesses comandos são sensíveis a maiúsculas e minúsculas. Os comandos falham quando os parâmetros não são especificados, conforme mostrado.

    • 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, Reiniciar o Mecanismo de Banco de Dados, o SQL Server Agent ou o Serviço de Navegador do SQL Server.

  3. 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.

  4. Saia do utilitário sqlcmd ou do SQL Server Management Studio.

  5. Interrompa a instância do SQL Server. Por exemplo, execute NET STOP MSSQLSERVER.

  6. Mova o arquivo ou os arquivos para o novo local.

  7. Reinicie a instância do SQL Server. Por exemplo, execute NET START MSSQLSERVER.

  8. 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>');  
    

Movendo o banco de dados mestre

Para mover o banco de dados mestre, siga estas etapas.

  1. No menu Iniciar , aponte para Todos os Programas, aponte para o Microsoft SQL Server, aponte para As Ferramentas de Configuração e clique no SQL Server Configuration Manager.

  2. No nó serviços do SQL Server , clique com o botão direito do mouse na instância do SQL Server (por exemplo, SQL Server (MSSQLSERVER)) e escolha Propriedades.

  3. Na caixa de diálogo Propriedades do SQL Server (instance_name), clique na guia Parâmetros de Inicialização.

  4. 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.

  5. 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 do arquivo de dados deve seguir o -d parâmetro e o valor do arquivo de log deve seguir o -l parâmetro. O exemplo a seguir mostra os valores de parâmetro para o local 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âmetro serão alterados da seguinte maneira:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Interrompa a instância do SQL Server clicando com o botão direito do mouse no nome da instância e escolhendo Parar.

  7. Mova os arquivos master.mdf e mastlog.ldf para o novo local.

  8. Reinicie a instância do SQL Server.

  9. 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 Resource é <unidade>:\Program Files\Microsoft SQL Server\MSSQL<versão>.<nome_da_instância>\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 de log do SQL Server Agent. Se você não atualizar esse caminho, o SQL Server Agent falhará ao iniciar.

  • Altere o local padrão do banco de dados. A criação de um novo banco de dados poderá falhar se a letra da unidade e o caminho especificados como o local padrão não existirem.

Alterar o caminho de log do SQL Server Agent

  1. No SQL Server Management Studio, no Pesquisador de Objetos, expanda o SQL Server Agent.

  2. Clique com o botão direito em Logs de Erros e clique em Configurar.

  3. 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\.

Alterar o local padrão do banco de dados

  1. No SQL Server Management Studio, no Pesquisador de Objetos, clique com o botão direito do mouse no servidor do SQL Server e clique em Propriedades.

  2. Na caixa de diálogo Propriedades do Servidor , selecione Configurações do Banco de Dados.

  3. Em Locais Padrão do Banco de Dados, navegue até o novo local para os arquivos de dados e de log.

  4. Pare e inicie o serviço do SQL Server para concluir a alteração.

Exemplos

Um. Movendo o banco de dados tempdb

O exemplo a seguir move os tempdb dados e os arquivos de log 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 novo local quando o serviço é reiniciado na etapa 3. Até que o serviço seja reiniciado, o tempdb continuará a usar os arquivos de dados e de log no local existente.

  1. Determine os nomes de arquivos lógicos do tempdb banco de dados e sua localização atual no disco.

    SELECT name, physical_name AS CurrentLocation  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    GO  
    
  2. 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  
    
  3. Pare e reinicie a instância do SQL Server.

  4. 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');  
    
  5. Exclua os arquivos tempdb.mdf e templog.ldf do local original.

Consulte Também

Banco de Dados de Recursos
Banco de dados tempdb
banco de dados mestre
Banco de dados msdb
banco de dados modelo
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 de Navegador do SQL Server
ALTERAR BASE DE DADOS (Transact-SQL)
Recompilar bancos de dados do sistema