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