Migrando Bancos de Dados de Sistema para Outra Unidade

Nesse post vamos mostrar como fazer a migração dos arquivos de banco de dados de sistema (master, model, msdb e tempdb) para outra unidade, utilizando o SQL SERVER 2016.

Para isso, precisamos ter atenção em relação ao apontamento feito logicamente no SQL Server. Por exemplo, precisamos alterar nas queries que será mostrado posteriormente, o nome exato do diretório e arquivos. Caso exista erro em relação a algum nome, seja de diretório ou nome do arquivo, o serviço do SQL Server não iniciará.

Vejamos alguns exemplos:

Precisamos migrar os bancos de sistema do diretório default de instalação para uma unidade específica. Nesse exemplo, migraremos para a unidade E:.

Movendo os Bancos model e msdb

Vamos iniciar a mudança de diretório por estes bancos. Para isso, utilizamos a seguinte query para saber qual o diretório original dos mesmos.

select name, physical_name from sys.master_files where database_id = db_id('model')
 
GO
 
select name, physical_name from sys.master_files where database_id = db_id('msdb')
 
GO

Como resultado temos:

Para movê-los, precisaremos trocar o apontamento para o diretório desejado. Nesse caso utilizaremos o E:\SQLSERVER2016\System.
Assim, podemos utilizar o seguinte script:

--------------MODEL-----------------------------
alter database model modify file 
    (name = modeldev, filename = 'E:\SQLSERVER2016\System\model.mdf')
go
 
alter database model modify file 
    (name = modellog, filename = 'E:\SQLSERVER2016\System\modellog.ldf')
go
 
 
-------------MSDB--------------------------------
alter database msdb modify file 
    (name = MSDBData, filename = 'E:\SQLSERVER2016\System\MSDBData.mdf')
go
 
alter database msdb modify file 
    (name = MSDBLog, filename = 'E:\SQLSERVER2016\System\MSDBLog.ldf')
go

Utilize a primeira query para garantir que o diretório foi alterado com sucesso.

Após, pare o serviço do SQL Server para conseguir trocar o arquivo físico de diretório. Feito isso, podemos copiar manualmente (ctrl + c do diretório antigo e ctrl + v para o novo) e reiniciar o serviço.

Se o serviço “subir”, verifique se está executando aquela primeira query. O retorno será o novo diretório.
Se OK, você pode remover os arquivos do diretório antigo com segurança. 😉

Movendo o Banco master

Para saber onde estão os arquivos do banco, execute a seguinte query:

select name, physical_name from sys.master_files where database_id = db_id('master')
 
GO

Obtivemos o seguinte retorno:

Feito isso, podemos utilizar o mesmo método que utilizamos anteriormente. Também altere o startup parameters no SQL Server Configuration Manager, para apontar para o mesmo diretório que utilizará na query.

Para sermos mais objetivos, faremos a troca somente pelo SQL Server Configuration Manager.

Para alterar os diretórios de origem do banco, você precisará parar o serviço do SQL Server e abrir como administrador o SQL Server Configuration Manager.

Clique com o botão direito no serviço da Engine do SQL Server, abra as propriedades e selecione a aba Startup Parameters.

Troque o diretório dos parâmetros existentes que possuem os diretórios dos arquivos de dados e log (não deve ser removido as iniciais dos parâmetros -d e -l).
Nesse caso, utilizamos o mesmo caminho dos bancos model e msdb: E:\SQLSERVER2016\System\.
Feita a alteração, teremos os seguintes valores para os parâmetros:

Assim, é só aplicar a nova configuração e mover os arquivos (ctrl + c e ctrl + v) do banco master do diretório antigo para o novo diretório.

Para finalizar, reinicie o serviço do SQL Server e utilize a primeira query para verificar se o diretório foi trocado com sucesso. 😉

Movendo o tempdb

Para verificar onde o TempDB atualmente está, podemos utilizar a seguinte query:

select name, physical_name from sys.master_files where database_id = db_id('tempdb')
 
GO

Como retorno temos:

Vamos escolher como destino a unidade D:. Assim, vamos utilizar as seguintes queries:

alter database tempdb modify file 
    (name = tempdev, filename = 'D:\Dados\tempdb.mdf')
go
 
alter database tempdb modify file 
    (name = templog, filename = 'D:\Log\templog.ldf')
go

Agora é só reiniciar o serviço e os arquivos de tempdb serão criados automaticamente. Confira pela query qual o diretório que está sendo utilizado. Neste caso temos:

Este banco se comporta diferente dos anteriores devido aos arquivos de tempdb, que sempre são recriados quando o serviço do SQL Server é reiniciado. Desta forma, você pode identificar qual foi a última data de reinicialização do serviço.

Ficou com alguma dúvida? Podemos ajudar a sua empresa?
Entre em contato com nossa equipe de DBAs para bater um papo!
http://www.crespidb.com.br/contato

 

Por Oberdan Schaider

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Backup SQL RDS para Amazon S3

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: [email protected]
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?