Alterar pasta (diretório) dos arquivos do Banco de Dados

Na criação de um banco de dados, o SQL Server cria, ao menos, dois arquivos: o arquivo de dados com extensão MDF e o arquivo de transações de log com extensão LDF. Mas... onde esses arquivos são criados? Em que pasta?

Bom, se você não alterou o caminho padrão na instalação do SQL Server e nem nas propriedades do servidor, então todos os arquivos que compõe os bancos de dados serão criados na pasta:

C:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014DEV\MSSQL\DATA

Eu, particularmente, prefiro manter todos os arquivos dos bancos de dados em uma pasta mais fácil de localizar e, na maioria dos casos, temos um segundo ou terceiro disco no servidor. E seria uma boa política manter esses arquivos nesses disco, principalmente se for um disco mais rápido.

Então, como proceder?

Primeiro, vamos descobrir em qual pasta estão os arquivos do BD DBATestes. Para isso, usamos:

  • sp_helpfile

Esta procedure interna do SQL Server devolve as informações básicas dos arquivos que compõe o BD. Também podemos consultar a tabela de sistema sys.database_files, que traz as mesmas informações de sp_helpfile e algumas a mais.

  • select * from sys.database_files

Bom, já sabemos onde estão os arquivos das bases de dados, então agora vamos ver como transferí-los para outra pasta. Neste exemplo, o destino dos arquivos é a pasta C:\SQLDATA. Mas pode ser qualquer outra que você queira, inclusive em outros discos existentes no servidor.

É de boa prática ter discos específicos para as bases de dados, diferentes do disco C: para a distribuição de I/O no servidor. Sinta-se à vontade para criar o caminho como for melhor na sua estrutura.

Primeiro, temos que garantir que ninguém está usando o banco de dados. Vamos verificar se tem alguém conectado:

USE master

go

SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID ('DBATestes')

go

Assim que todas as conexões ativas forem encerradas, vamos deixar o BD offline para garantir que ninguém vai acessar a base enquanto trabalhamos:

USE master

go

ALTER DATABASE DBATestes SET OFFLINE WITH ROLLBACK IMMEDIATE

go

Neste ponto, o BD está offline, então podemos mover os arquivos MDF e LDF (e os outros, se houver) para as novas pastas de destino. Aqui, usamos o Windows Explorer mesmo. Um simples COPIAR e COLAR. Eu não gosto de usar o MOVER. Prefiro copiar, validar o funcionamento e depois apagar os arquivos originais.

Com os arquivos nas novas pastas (diretórios), vamos executar uma alteração nas configurações do BD, informando a nova localização dos arquivos:

USE master

go

ALTER DATABASE DBATestes

MODIFY FILE (NAME = 'DBATestes', FILENAME ='C:\SQLDATA\DBATestes.mdf') GO ALTER DATABASE DBATestes

MODIFY FILE (NAME = 'DBATestes_Log', FILENAME ='C:\SQLDATA\DBATestes_Log.ldf') GO

Com a localização dos arquivos atualizadas, basta deixar o BD online novamente:

USE master

go

ALTER DATABASE DBATestes SET ONLINE

go

E, para confirmar que os arquivos estão na pasta correta:

use DBATestes go

exec sp_helpfile go

Outra forma de alterar a localização dos arquivos é utilizando a opção Detach e Attach, depois de garantir que ninguém está usando o BD.

USE master GO ALTER DATABASE DBATestes SET OFFLINE WITH ROLLBACK IMMEDIATE

go

EXEC master.dbo.sp_detach_db @dbname = N'DBATestes' GO

A procedure sp_detach_db desliga o BD da instância do SQL Server. Assim é possível mover os arquivos. Após transferir os arquivos para a pasta de destino (neste caso, estou voltando para a pasta original), executamos o comando:

USE [master] GO CREATE DATABASE [DBATestes]

ON ( FILENAME = N'C:\Program Files\Microsoft SQL

Server\MSSQL12.SQL2014DEV\MSSQL\DATA\DBATestes.mdf' ), ( FILENAME = N'C:\Program Files\Microsoft SQL

Server\MSSQL12.SQL2014DEV\MSSQL\DATA\DBATestes_Log.ldf' ) FOR ATTACH GO

As duas opções chegam ao mesmo resultado. Qual usar? Aquela que você preferir.

Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags