-- Primeiro vamos fazer o backup
Não vou demora falando como fazer backup veja os outros artigos.
-- Segundo para não termos problema com transações desabilite o usuário(s) depois de executar a operação habilite o usuário .
USE [master]
GO
DENY CONNECT SQL TO <<< USUARIO >>>
GO
ALTER LOGIN <<< USUARIO >>> DISABLE
GO
-- --------------------------------------------------------------------------------> EXPLICAÇÃO RÁPIDA
use BD_MEU_BANCO
SELECT name, physical_name, type_desc FROM sys.database_files
--> ANOTE O NAME (NOME LOGICO DOS ARQUIVOS DO BANCO )
BD_MEU_BANCO_Data
BD_MEU_BANCO_Log
--> ANOTE TAMBEM O PHYSICAL_NAME ( DIRETORIO E O NOME DO ARQUIVO FISICO DO BANCO QUE IREMOS COPIAR PARA O NOVO LOCAL )
-- C:\DATA\BD_MEU_BANCO.mdf
-- C:\DATA\BD_MEU_BANCO.ldf
USE master
ALTER DATABASE BD_MEU_BANCO SET OFFLINE
--> COPIE OS ARQUIVOS DO BANCO (mdf,ldf) para o novo endereco neste exemplo E:\Banco\
ALTER DATABASE BD_MEU_BANCO MODIFY FILE (NAME = BD_MEU_BANCO_Data, FILENAME = 'E:\Banco\BD_MEU_BANCO.mdf')
GO
ALTER DATABASE BD_MEU_BANCO MODIFY FILE (NAME = BD_MEU_BANCO_Log, FILENAME = 'E:\Banco\BD_MEU_BANCO.ldf')
GO
ALTER DATABASE BD_MEU_BANCO SET ONLINE
use BD_MEU_BANCO
SELECT name, physical_name, type_desc FROM sys.database_files
==> Não esqueça de habilitar o usuário(s).
USE [master]
GO
GRANT CONNECT SQL TO <<< USUARIO >>>
GO
ALTER LOGIN <<< USUARIO >>> ENABLE
GO
-- --------------------------------------------------------------------------------> EXPLICAÇÃO DEMORADA
-- Selecione o banco tipo exemplo
USE BANCO_MOVER
-- Descobrindo os arquivos e localidade dos arquivos do banco em questao (banco_mover)
-- Preste atenção pois quando você for colocar name = e o filename = voce vai precisar saber o que colocar
SELECT name, physical_name, type_desc FROM sys.database_files
-- Colocando o banco offline para mover os arquivos
USE master
ALTER DATABASE BANCO_MOVER SET OFFLINE WITH ROLLBACK IMMEDIATE
-- Beleza vamos alterar o endereco do(s) arquivo(s) de dados do banco
-- << Lembrando que podemos ter mais de um arquivo de dados = mdf >>.
ALTER DATABASE BANCO_MOVER MODIFY FILE (NAME = BANCO_MOVER_DATA,FILENAME = 'C:\Nova Localidade do Arqvuivo\BANCO_MOVER.MDF')
-- Beleza vamos alterar o endereco do(s) arquivo(s) de log do banco
-- << lembrando que podemos ter mais de um arquivo de log = ldf >>.
ALTER DATABASE BANCO_MOVER MODIFY FILE (NAME = BANCO_MOVER_log, FILENAME = 'C:\Nova Localidade do Arqvuivo\BANCO_MOVER_log.LDF’)
-- Colocando o banco online para mover os arquivos
ALTER DATABASE BANCO_MOVER SET ONLINE
OBS.
Problemas comuns :
Fiz besteira e não anotei as informações NAME, bem lembra aquele backup que falei para fazer então: RESTORE FILELISTONLY FROM DISK = 'B:\BACKUP\BANCO_MOVER.BAK'
Não consigo colocar o banco em offline : kill nos processos do banco em questão, não resolveu para o serviço do Sql Server, ( Radical eu magina.... ).
OBS 2 ..:
Para listar todos os arquivos LDF (arquivos de Índice utilize ) :
SELECT
db.name AS DBName, type_desc AS FileType, Physical_Name AS Location FROM sys.master_files mf
INNER JOIN sys.databases db ON db.database_id = mf.database_id and type_desc='LOG'