Partilhar via


Mover bancos de dados do sistema

Aplica-se a:SQL Server

Este artigo 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 falhas. Por exemplo, o banco de dados está no modo suspeito ou foi desligado devido a uma falha de hardware.

  • Recolocação prevista.

  • Realocação para manutenção programada do disco.

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

Os procedimentos neste artigo exigem o nome lógico dos arquivos de banco de dados. Para obter o nome, consulte a coluna de nomes na vista de catálogo sys.master_files.

Importante

Se você mover um banco de dados do sistema e, posteriormente, reconstruir o banco de dados master, deverá mover o banco de dados do sistema novamente porque a operação de reconstrução instalará todos os bancos de dados do sistema em seu local padrão.

Mover os bancos de dados do sistema

Para mover um banco de dados do sistema ou um arquivo de log como parte de uma realocação planejada ou operação de manutenção agendada, siga estas etapas. Isso inclui os bancos de dados do sistema model, msdbe tempdb.

Importante

Este procedimento aplica-se a todos os bancos de dados do sistema, exceto os bancos de dados master e Resource. Consulte mais adiante neste artigo para obter as etapas para mover o banco de dados master. O banco de dados Resource não pode ser movido.

  1. Registre o local existente dos arquivos de banco de dados que você pretende mover, revisando a exibição de catálogo sys.master_files.

  2. Verifique se a conta de serviço do Mecanismo de Banco de Dados do SQL Server tem permissões totais para o novo local dos arquivos. Para obter mais informações, consulte Configurar contas de serviço e permissões do Windows. Se a conta de serviço do Mecanismo de Banco de Dados não puder controlar os arquivos em seu novo local, a instância do SQL Server não será iniciada.

  3. Para cada arquivo de banco de dados a ser movido, execute a instrução a seguir.

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

    Até que o serviço seja reiniciado, o banco de dados continuará a usar os dados e os arquivos de log no local existente.

  4. Pare a instância do SQL Server para executar a manutenção. Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços do SQL Server.

  5. Copie o(s) arquivo(s) de banco de dados para o novo local. Esta etapa não é necessária para o banco de dados do sistema tempdb; Esses arquivos são criados no novo local automaticamente.

  6. Reinicie a instância do SQL Server ou o servidor. Para obter mais informações, consulte Iniciar, parar, pausar, retomar e reiniciar os serviços do SQL Server.

  7. Verifique a alteração do arquivo executando a consulta a seguir. Os bancos de dados do sistema devem relatar os novos locais de arquivos físicos.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    
  8. Como na Etapa 5 você copiou os arquivos de banco de dados em vez de movê-los, agora você pode excluir com segurança os arquivos de banco de dados não utilizados de seu local anterior.

Acompanhamento: Depois de mover o banco de dados do sistema msdb

Se o banco de dados msdb for movido e o Database Mail do estiver configurado, conclua as etapas adicionais a seguir.

  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';
    

    Se o Service Broker não estiver habilitado para msdb, ele deverá ser reativado para que o Database Mail funcione. Para obter mais informações, consulte ALTER DATABASE ... CONFIGURAR ENABLE_BROKER.

    ALTER DATABASE msdb
        SET ENABLE_BROKER
        WITH ROLLBACK IMMEDIATE;
    

    Confirme se o valor de is_broker_enabled agora é 1.

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

Procedimento de recuperação de falhas

Se um arquivo precisar ser movido devido a uma falha de hardware, siga estas etapas para realocar o arquivo para um novo local. Este procedimento aplica-se a todos os bancos de dados do sistema, exceto os bancos de dados master e Resource. Os exemplos a seguir usam o prompt de linha de comando do Windows e utilitário sqlcmd.

Importante

Se o banco de dados não puder ser iniciado, se estiver no modo suspeito ou em um estado não recuperado, somente os membros da função fixa sysadmin poderão mover o arquivo.

  1. Verifique se a conta de serviço do Mecanismo de Banco de Dados do SQL Server tem permissões totais para o novo local dos arquivos. Para obter mais informações, consulte Configurar contas de serviço e permissões do Windows. Se a conta de serviço do Mecanismo de Banco de Dados não puder controlar os arquivos em seu novo local, a instância do SQL Server não será iniciada.

  2. Pare a instância do SQL Server se ela estiver iniciada.

  3. Inicie a instância do SQL Server no modo de recuperação apenas master, inserindo um dos seguintes comandos na linha de comandos. O uso do parâmetro de inicialização 3608 impede que o SQL Server inicie e recupere automaticamente qualquer banco de dados, exceto o banco de dados master. Para obter mais informações, consulte Parâmetros de inicialização e TF3608.

    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 como 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 e reiniciar os serviços do SQL Server.

  4. Imediatamente após a inicialização do serviço com o sinalizador de rastreamento 3608 e /f, estabeleça uma conexão de sqlcmd com o servidor para obter a única conexão disponível. Por exemplo, ao executar sqlcmd localmente no mesmo servidor que a instância padrão (MSSQLSERVER) e para se conectar com a autenticação de integração do Ative Directory, execute o seguinte comando:

    sqlcmd
    

    Para se conectar a uma instância nomeada no servidor local, com a autenticação de integração do Ative Directory:

    sqlcmd -S localhost\instancename
    

    Para obter mais informações sobre sintaxe de sqlcmd, consulte utilitário sqlcmd.

    Para cada arquivo a ser movido, use comandos sqlcmd ou o SQL Server Management Studio para executar a instrução a seguir. Para obter mais informações sobre como usar o utilitário sqlcmd, consulte sqlcmd - use o utilitário. Quando a sessão sqlcmd estiver aberta, execute a seguinte instrução uma vez para cada arquivo a ser movido:

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    GO
    
  5. Saia do utilitário sqlcmd ou do SQL Server Management Studio.

  6. Pare a instância do SQL Server. Por exemplo, execute NET STOP MSSQLSERVER no prompt de linha de comando.

  7. Copie o arquivo ou arquivos para o novo local.

  8. Reinicie a instância do SQL Server. Por exemplo, execute NET START MSSQLSERVER no prompt de linha de comando.

  9. 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>');
    
  10. Como na Etapa 7 você copiou os arquivos de banco de dados em vez de movê-los, agora você pode excluir com segurança os arquivos de banco de dados não utilizados de seu local anterior.

Mover a base de dados master

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

  1. Verifique se a conta de serviço do Mecanismo de Banco de Dados do SQL Server tem permissões totais para o novo local dos arquivos. Para obter mais informações, consulte Configurar contas de serviço e permissões do Windows. Se a conta de serviço do Mecanismo de Banco de Dados não puder controlar os arquivos em seu novo local, a instância do SQL Server não será iniciada.

  2. No menu Iniciar, localize e inicie o SQL Server Configuration Manager. Para obter mais informações sobre o local esperado, consulte SQL Server Configuration Manager.

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

  4. Na caixa de diálogo Propriedades do SQL Server (instance_name), selecione a guia Parâmetros de Inicialização.

  5. Na caixa Parâmetros existentes, selecione o parâmetro -d. Na caixa Especificar um parâmetro de inicialização, altere o parâmetro para o novo caminho do arquivo de dados master. Selecione Atualizar para guardar a alteração.

  6. Na caixa Parâmetros existentes, selecione o parâmetro -l. Na caixa Especificar um parâmetro de inicialização, altere o parâmetro para o novo caminho do arquivo de log master. Selecione Atualizar para salvar a alteração.

    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 para o local padrão do arquivo de dados master.

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

    Se a realocação planeada para o arquivo 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
    
  7. Selecione OK para salvar as alterações permanentemente e fechar a caixa de diálogo Propriedades do SQL Server (instance_name).

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

  9. Copie os arquivos master.mdf e mastlog.ldf para o novo local.

  10. Reinicie a instância do SQL Server.

  11. 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');
    
  12. Neste ponto, o SQL Server deve ser executado normalmente. No entanto, a Microsoft recomenda também ajustar a entrada do registo em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, onde instance_ID é como MSSQL13.MSSQLSERVER. Nessa colmeia, altere o valor SQLDataRoot para o novo caminho do novo local dos arquivos de banco de dados master. A falha na atualização do registro pode fazer com que a aplicação de patches e a atualização falhem.

  13. Como na Etapa 9 você copiou os arquivos de banco de dados em vez de movê-los, agora você pode excluir com segurança os arquivos de banco de dados não utilizados de seu local anterior.

Mover o banco de dados de recursos

O local do banco de dados Resource é \<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 seguintes atualizações.

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

  • Altere o local padrão do banco de dados. A criação de um novo banco de dados pode falhar se a letra do disco e o caminho especificados como localização padrão não existirem.

Alterar o caminho do log do SQL Server Agent

Se você moveu todos os bancos de dados do sistema para um novo volume ou migrou para outro servidor com uma letra de unidade diferente e o caminho do arquivo de log de erros do SQL Agent SQLAGENT.OUT não existe mais, faça as seguintes atualizações.

  1. No SQL Server Management Studio, em Explorador de Objetos, expanda SQL Server Agent.

  2. Clique com o botão direito do mouse Logs de Erros e selecione Configurar.

  3. Na caixa de diálogo Configurar Logs de Erros do SQL Server Agent, especifique o novo local do ficheiro SQLAGENT.OUT. O local padrão é C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\.

Alterar o local padrão do banco de dados

  1. No SQL Server Management Studio, em Pesquisador de Objetos, conecte-se à instância desejada do SQL Server. Clique com o botão direito do mouse na instância e selecione 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 SQL Server para concluir a alteração.

Exemplos

Um. Mover o banco de dados tempdb

O exemplo a seguir move os dados tempdb e os arquivos de log para um novo local como parte de uma realocação planejada.

Dica

Aproveite esta oportunidade para rever os seus ficheiros tempdb para um tamanho e posicionamento ideais. Para obter mais informações, consulte Otimizando o desempenho do tempdb no SQL Server.

Como tempdb é recriado sempre que a instância do SQL Server é iniciada, não é necessário mover fisicamente os dados e os arquivos de log. Os arquivos são criados no novo local quando o serviço é reiniciado na etapa 4. Até que o serviço seja reiniciado, tempdb continua a usar os dados e os arquivos de log no local existente.

  1. Determine os nomes de arquivo lógico do banco de dados tempdb 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. Verifique se a conta de serviço do Mecanismo de Banco de Dados do SQL Server tem permissões totais para o novo local dos arquivos. Para obter mais informações, consulte Configurar contas de serviço e permissões do Windows. Se a conta de serviço do Mecanismo de Banco de Dados não puder controlar os arquivos em seu novo local, a instância do SQL Server não será iniciada.

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

    Até que o serviço seja reiniciado, tempdb continua a usar os dados e os arquivos de log no local existente.

  4. Pare e reinicie a instância do SQL Server.

  5. 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');
    
  6. Exclua os arquivos tempdb não utilizados de seu local original.