Cada base de datos de SQL Server tiene al menos dos archivos:
- El archivo de datos que tiene extensión mdf.
- El archivo de transacciones que tiene extensión ldf.
Estos dos archivos se encuentran en "C:Archivos de ProgamaMicrosoft SQL ServerMSSQLData". Si por algún motivo necesitamos cambiar la ubicación de estos archivos a otra carpeta o a otro disco tenemos que realizar un proceso sencillo pero laborioso. Vamos a ver paso a paso como realizar este cambio de ubicación de los ficheros de las bases de datos.
Para mover la ubicación de los archivos de nuestras bases de datos vamos a suponer que hemos realizado una instalación por defecto del SQL Server, es decir, las bases de datos se encuentran en la carpeta "C:Archivos de ProgamaMicrosoft SQL ServerMSSQLData", y queremos llevarlas a un disco distinto, por ejemplo a "D:"
El primer paso es realizar una copia de seguridad de TODOS los datos y TODAS las bases de datos del servidor (master incluida por supuesto) puesto que estos cambios entrañan peligro para el propio servidor.
Ahora veamos como mover todas las bases de datos una por una
Mover Bases de Datos de Usuarios
A continuación vamos a mover las bases de datos de usuarios. Si tenemos una base de datos llamada "Pruebas" en el analizador de consultas ejecutamos el siguiente script para separar la base de datos del servidor
use master go sp_detach_db 'Pruebas' go
Lo siguiente es mover los archivos de esta base de datos (pruebas.mdf y pruebas.ldf) a la carpeta destino ("D:")Y por último volvemos a adjuntar la base de datos en su ubicación actual.
use master go sp_attach_db 'Pruebas','D:pruebas.mdf','D:pruebas.ldf' go
y para ver que todo ha ido bien.
sp_helpdb 'Pruebas'
Ahora hay que repetir este procedimiento para todas las bases de datos de usuario que tengamos
Mover msdb
Vamos a empezar moviendo la base de datos "msdb"
- Abrir el Administrador corporativo
- Pulsamos con el botón derecho sobre el nombre del servidor y sacamos el menú de propiedades
- En la solapa general escogemos parámetros de inicio y escribimos -T3608 y lo agregamos. Aceptamos.
- Detenemos y reiniciamos el SQL Server
- Detener si está encendido el servicio SQL Server Agent
- Separamos la base de datos "msdb"
- Movemos "msdbdata.mdf" y "msdblog.ldf" a su destino (igual que antes D:)
- Quitamos el parámetro de inicio que pusimos antes (el -T3608)
- Detenemos y reiniciamos el SQL Server
- Volvemos a adjuntar la base de datos "msdb"
use master go sp_detach_db 'msdb' go
use master go sp_attach_db 'msdb','D:msdbdata.mdf','D:msdblog.ldf' go
Y para ver que todo va bien como antes podemos usar el procedimiento almacenado sp_helpdb para ver nuestra base de datos.
Mover model
Para mover "model" los pasos son similares a los anteriores.
- Añadimos como antes el parámetro -T3608 en los parámetros de inicio de las propiedades del servidor.
- Detenemos y reiniciamos el SQL Server
- Separamos la base de datos
- Movemos los archivos "model.mdf" y "modellog.ldf" a su nueva ubicación ("D:")
- Adjuntamos la base de datos "model"
- Quitamos como antes el parámetro -T3608
- Detenemos y reiniciamos el servidor
use master go sp_detach_db 'model' go
use master go sp_attach_db 'model','D:model.mdf','D:modellog.ldf' go
Y listo. Comprobemos que todo va bien, y sigamos adelante.
Mover tempdb
Este caso es más sencillo porque podemos mover esta base de datos utilizando el comando ALTER DATABASE. Utilizaremos el siguiente Script
use master go Alter database tempdb modify file (name = tempdev, filename = 'D: empdb.mdf') go Alter database tempdb modify file (name = templog, filename = 'D: emplog.ldf') go
Para ver como funciona exactamente este comando podéis ver lo BOL Un último paso es detener y reiniciar el SQL Server y borrar los archivos temporales viejos.
Mover master
Bueno, el paso final es mover "master"
- Abrimos el Administrador Corporativo
- Pulsamos con el botón derecho en el servidor y sacamos la ventana de propiedades
- Pinchamos en parámetros de inicio y vemos que hay las siguientes entradas
- Y podemos cambiar los relacionados con master por
- También podemos cambiar de la misma manera la ubicación de los registros de error
- Detenemos el SQL Server
- Copiamos "master.mdf" y "masterlog.ldf" a la nueva localización
- Reiniciamos el SQL Server
-dC:Archivos de ProgamaMicrosoft SQL ServerMSSQLDatamaster.mdf -eC:Archivos de ProgamaMicrosoft SQL ServerMSSQLlogErrorLog -lC:Archivos de ProgamaMicrosoft SQL ServerMSSQLDatamastlog.ldf
-dD:master.mdf -lD:mastlog.ldf
Con esto debería estar todo listo y nuestro servidor debería funcionar perfectamente pero ahora con todos los ficheros de bases de datos en "D:" como queríamos.
Sólo recordar una cosa más. Estos cambios son una operación de alto riesgo y tener copias de seguridad de TODO antes de empezar es imprescindible.