Não é necessário parar o o serviço do SQL Server para mover seus arquivos para outro diretório, bata apenas colocar em modo offline, impedindo que os arquivos sejam usados pela instância.
Nesse exemplo, vamos mover alguns datafiles de indices para outro disco.
- SELECT para montar os comandos
SELECT 'ALTER DATABASE '+d.name+
' MODIFY FILE ( NAME = '+f.name+' , FILENAME = "R:\MSSQL\INDEX\ '+f.physical_name+'");' cmd
FROM sys.master_files f, sys.databases d
where d.database_id=f.database_id
and d.name not in ('master','tempdb','model','msdb')
and type_desc='ROWS';
- Altere a localização dos arquivos no dicionário de dados, com o comando ALTER DATABASE
ALTER DATABASE BDPRD MODIFY FILE ( NAME = BDPRD_INDEX , FILENAME = "R:\MSSQL\INDEX\BDPRD_INDEX_1.ndf");
ALTER DATABASE BDDEV MODIFY FILE ( NAME = BDDEV_Index , FILENAME = "R:\MSSQL\INDEX\BDDEV_index.ndf");
ALTER DATABASE BDQA MODIFY FILE ( NAME = BDQA_Index , FILENAME = "R:\MSSQL\INDEX\BDQA_Index_1.ndf");
Essa alteração será realizada na próxima vez que o banco for iniciado.
- Setar os bancos para modo offline
ALTER DATABASE BDPRD SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE BDDEV SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE BDQA SET OFFLINE WITH ROLLBACK IMMEDIATE;
- No sistema operacional, move ou copie os arquivos para o novo diretório.
- Volte os bancos para modo online.
ALTER DATABASE BDPRD SET ONLINE;
ALTER DATABASE BDDEV SET ONLINE;
ALTER DATABASE BDQA SET ONLINE;
Feito, arquivos movidos para o novo disco!