-- 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'