SQL Server - Move datafile

SQL Server - Move datafile

As vezes é necessário realizar a movimentação de datafiles para outras unidade ou para diretórios diferentes para facilitar a organização ou ajudar no espaço em disco. Pois bem neste post irei passar como realizar estas etapas.

Primeiro iremos realizar o comando de move datafile com o banco de dados online, desta forma o comando será validado no dicionário de dados do SQL Server.

ALTER DATABASE TESTE
MODIFY FILE (NAME = TESTE_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG_\TESTE_log.ldf')

Veja a saida do resultado

The file "teste_log" has been modified in the system catalog. The new path will be used the next time the database is started.

Completion time: 2021-09-14T03:30:43.5272005+00:00

Bom agora iremos passar o banco de dado para modo offline.

ALTER DATABASE TESTE SET OFFLINE WITH ROLLBACK IMMEDIATE

Nota: Utilizando o rollback immediate derruba qualquer conexão que esteja ativa ainda no banco de dados.

Ao passar a base para modo offline, é hora de copiar ou mover o arquivo desejado para a nova unidade ou diretório necessário. Vale lembrar que se for um novo disco o usuário que inicia o serviço do SQL Server deve ter permissões de escrita e gravação neste disco.

Finalizando a movimentação física do arquivo é hora de passar o banco de dados para modo online.

ALTER DATABASE TESTE SET ONLINE

Momento de validar se a movimentação foi concluída com sucesso.

SELECT name, physical_name AS NewLocation, state_desc AS OnlineStatus
FROM sys.master_files  
WHERE database_id = DB_ID(N'TESTE')  
GO

Na clausula where informar o nome do banco desejado.

Retorno do select.

name           NewLocation                                                                          OnlineStatus
-------------- ------------------------------------------------------------------------------------ ------------
TESTE         C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\TESTE.mdf        ONLINE
TESTE_log     C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG_\TESTE_log.ldf    ONLINE

Boa Sorte.