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
, msdb
e 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.
Registre o local existente dos arquivos de banco de dados que você pretende mover, revisando a exibição de catálogo sys.master_files.
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.
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.
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.
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.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.
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>');
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.
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.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.
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.
Pare a instância do SQL Server se ela estiver iniciada.
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 dadosmaster
. 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.
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
Saia do utilitário sqlcmd ou do SQL Server Management Studio.
Pare a instância do SQL Server. Por exemplo, execute
NET STOP MSSQLSERVER
no prompt de linha de comando.Copie o arquivo ou arquivos para o novo local.
Reinicie a instância do SQL Server. Por exemplo, execute
NET START MSSQLSERVER
no prompt de linha de comando.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>');
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.
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.
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.
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.
Na caixa de diálogo Propriedades do SQL Server (instance_name), selecione a guia Parâmetros de Inicialização.
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 dadosmaster
. Selecione Atualizar para guardar a alteração.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 logmaster
. 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 dadosmaster
.-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
forE:\SQLData
, os valores dos parâmetros serão alterados da seguinte maneira:-dE:\SQLData\master.mdf -lE:\SQLData\mastlog.ldf
Selecione OK para salvar as alterações permanentemente e fechar a caixa de diálogo Propriedades do SQL Server (instance_name).
Pare a instância do SQL Server clicando com o botão direito do mouse no nome da instância e escolhendo Parar.
Copie os arquivos
master.mdf
emastlog.ldf
para o novo local.Reinicie a instância do SQL Server.
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');
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 é comoMSSQL13.MSSQLSERVER
. Nessa colmeia, altere o valorSQLDataRoot
para o novo caminho do novo local dos arquivos de banco de dadosmaster
. A falha na atualização do registro pode fazer com que a aplicação de patches e a atualização falhem.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.
No SQL Server Management Studio, em Explorador de Objetos, expanda SQL Server Agent.
Clique com o botão direito do mouse Logs de Erros e selecione Configurar.
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
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.
Na caixa de diálogo Propriedades do Servidor, selecione Configurações do Banco de Dados.
Em Locais Padrão do Banco de Dados, navegue até o novo local para os arquivos de dados e de log.
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.
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
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.
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.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
não utilizados de seu local original.
Conteúdo relacionado
- banco de dados de recursos
- banco de dados tempdb
- banco de dados mestre
- banco de dados msdb
- base de dados modelo
- Mover bancos de dados de utilizadores
- Mover arquivos de banco de dados
- Iniciar, parar, pausar, retomar e reiniciar os serviços do SQL Server
- ALTERAR BASE DE DADOS (Transact-SQL)
- Reconstruir bancos de dados do sistema