Movendo 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á 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.

Neste tópico

Antes de começar

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

Falha no procedimento de recuperação

Procedimento para mover o banco de dados mestre

Acompanhamento: depois de mover todos os bancos de dados do sistema

Exemplo de mover o banco de dados tempdb

Antes de começar

Analise as seguintes informações antes de implementar os procedimentos definidos neste tópico.

Os procedimentos a seguir se aplicam para mover arquivos de banco de dados dentro da mesma instância do SQL Server. Para mover um banco de dados para uma outra instância do SQL Server ou para um outro servidor, use as operações de backup e restauração ou de anexação e desanexação.

O banco de dados de recursos não pode ser movido.

Os procedimentos neste tópico exigem o nome lógico dos arquivos de banco de dados. Para obter o nome, consulte a coluna name na exibição do catálogo sys.master_files.

Observação importanteImportante

Se você mover um banco de dados do sistema e, posteriormente, recriar o banco de dados master, 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. Para obter mais informações sobre como recriar o banco de dados master, consulte "Recriando bancos de dados do sistema, Recriando o Registro" em Como instalar o SQL Server 2008 R2 do prompt de comando.

Ícone de seta usado com o link Voltar ao Início[Início]

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 master e Resource.

  1. 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' );
    
  2. Pare a instância do SQL Server ou desligue o sistema para realizar a manutenção. Para obter mais informações, consulte Interrompendo serviços.

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

  4. Reinicialize a instância do SQL Server ou o servidor. Para obter mais informações, consulte Serviços de inicialização e reinicialização.

  5. Verifique se houve alteração no arquivo, executando a seguinte consulta.

    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, execute 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. Para obter mais informações, consulte Solucionando problemas de Database Mail.

Ícone de seta usado com o link Voltar ao Início[Início]

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 master e Resource.

Observação importanteImportante

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.

  1. Pare a instância do SQL Server se for iniciado.

  2. Inicie a instância do SQL Server no modo de recuperação somente 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 Como iniciar uma instância do SQL Server (comandos net).

  3. Para cada arquivo a ser movido, execute o comando sqlcmd ou o SQL Server Management Studio para executar 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 Usando o utilitário sqlcmd.

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

  5. Pare 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 uma instância do SQL Server. Por exemplo, execute NET START MSSQLSERVER.

  8. Verifique se houve alteração no arquivo, executando a seguinte consulta.

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

Ícone de seta usado com o link Voltar ao Início[Início]

Procedimento para mover o banco de dados mestre

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

  1. Pelo menu Iniciar, aponte para Todos os Programas, aponte para Microsoft SQL Server 2005, aponte para Ferramentas de Configuração e clique em SQL Server Configuration Manager.

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

  3. Na caixa de diálogo SQL Server (instance_name) Propriedades, clique na guia Avançado.

  4. Edite os valores de Parâmetros de Inicialização para apontarem para o local planejado dos arquivos de log e de dados do banco de dados master e clique em OK. Mover o arquivo de log de erros é opcional.

    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 seguinte exemplo mostra os valores do parâmetro para o local padrão dos arquivos de dados master e arquivos de log.

    -dC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf
    -lC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    DATA\mastlog.ldf
    

    Se a realocação planejada para os arquivos de log e de dados master for E:\SQLData, os valores dos parâmetros serão alterados da seguinte maneira:

    -dE:\SQLData\master.mdf
    -lE:\SQLData\mastlog.ldf
    
  5. Pare a instância do SQL Server clicando com o botão direito do mouse no nome da instância e escolhendo Parar.

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

  7. Reinicie a instância do SQL Server.

  8. Verifique a alteração do arquivo para o banco de dados master executando a consulta a seguir.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    GO
    

Ícone de seta usado com o link Voltar ao Início[Início]

Acompanhamento: depois de mover todos os bancos de dados do sistema

Se você mover 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 seguintes atualizações.

  • Altere o caminho do log do SQL Server Agent. Se você não atualizar este caminho, o SQL Server Agent não poderá ser iniciado.

  • Altere o local padrão do banco de dados. Criar um novo banco de dados pode falhar se a letra e o caminho da unidade especificados como o local padrão não existir.

Altere o caminho do log do SQL Server Agent.

  1. No SQL Server Management Studio, no Gerenciador de Servidores, expanda SQL Server Agent.

  2. Clique com o botão direito do mouse 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\MSSQL10_50.<nome_da_instância>\MSSQL\Log\.

Altere 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 de Banco de Dados.

  3. Em Locais padrão de banco de dados, navegue até o novo local para os arquivos de log e de dados.

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

Ícone de seta usado com o link Voltar ao Início[Início]

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çãoObservação

Como o tempdb é recriado cada vez que o serviço do SQL Server é iniciado, não é necessário mover fisicamente os arquivos de dados e 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. Assim que você tiver iniciado o serviço do SQL Server, poderá querer excluir os arquivos de log e de dados do tempdb do local original.

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

Ícone de seta usado com o link Voltar ao Início[Início]