Gestionar los discos duros (y el espacio de estos) es una de las tareas fundamentales a la hora de mantener un servidor SQL Server funcionando correctamente. La falta de espacio no solo puede provocar problemas al ejecutar tareas en las instancias, sino que también puede provocar que estas se detengan por completo y dejen de funcionar si el espacio libre llega a 0. Es por esto que a la hora de hacer configuraciones para nuevos servidores o de revisar las configuraciones de nuestros nuevos clientes, insistimos mucho en que los servidores tengan al menos un disco para cada tipo de archivo de las bases de datos (datos, logs, tempdb) y, si es posible, otro para los backups.
Pensaréis que esto es algo lógico, pero la verdad es que la mayoría de las veces que alguien sin experiencia hace una instalación, básicamente hace «siguiente, siguiente y siguiente» porque… bueno, funciona. Es por esto que hoy os enseñaré cómo mover las bases de datos y sus archivos de un disco a otro y corregir así los problemas de espacio que hayan podido aparecer.
Básicamente existen 3 formas distintas de hacer esto.
Mover una base de datos con detach y attach
Siendo sincero, esta es mi forma favorita y la que siempre recomiendo, ya que se puede hacer directamente usando el asistente sin tener que ejecutar una sola query, aunque siempre recomiendo sacar las queries y luego ejecutarlas.
1.Desmontar una base de datos en SQL Server
El primer paso es desmontar la base de datos. Para esto haremos botón derecho sobre la base de datos > tareas > desmontar/detach. Veréis que la base de datos desaparece de la lista, no entréis en pánico, es normal.
Ahora podréis mover los archivos de la base de datos al nuevo disco. Si es más de un disco, pues cada archivo a donde corresponda.
2.Montar una base de datos en SQL Server
Una vez que los archivos hayan sido movidos a su nuevo destino, haremos la operación inversa al punto número 1. Botón derecho > montar/attach. Tendréis que seleccionar la base de datos y los archivos necesarios. Una vez que hayáis hecho esto, la base de datos aparecerá en la lista de nuevo.
Modificar la ruta de los archivos de una base de datos en SQL Server
La otra forma socialmente aceptada de hacer esto. En este caso no «perderemos de vista» la base de datos, pero de igual forma no estará accesible.
1. Poner una base de datos offline en SQL Server
Fácil y sencillo, tendremos que poner la base de datos en cuestión en modo offline. Botón derecho sobre la base de datos. También podréis hacerlo ejecutando la siguiente query:
ALTER DATABASE NombreBaseDeDatos SET OFFLINE;
2.Modificar la ruta de los archivos de la base de datos
No estoy seguro de si esto puede hacerse cambiando la ruta de los archivos en las propiedades de la base de datos mientras la base de datos está offline, así que aquí os dejo las queries necesarias:
ALTER DATABASE NombreBaseDeDatos MODIFY FILE (NAME = NombreLógicoDatos, FILENAME = 'RutaNueva\NombreBaseDeDatos.mdf'); ALTER DATABASE NombreBaseDeDatos MODIFY FILE (NAME = NombreLógicoLog, FILENAME = 'RutaNueva\NombreBaseDeDatos_log.ldf');
3.Mover los archivos de la base de datos a su nuevo destino
Pues eso, mueves los archivos de la base de datos a donde sea necesario.
4.Poner online de nuevo la base de datos en SQL Server
El proceso inverso al punto número 1, tanto usando el asistente como usando la query:
ALTER DATABASE NombreBaseDeDatos SET ONLINE;
Y listo, la base de datos ya debería estar funcionando alojada en el nuevo destino.
Tomar un backup y restaurarlo en un nuevo disco
Esta forma, aunque sea totalmente válida, no es muy usada para esta tarea. En caso de que por cualquier razón no podáis ejecutar ninguna de las anteriores, podréis tomar un backup de la base de datos y restaurarla cambiando la ruta de los archivos al hacer el restore. No os voy a explicar este proceso porque podréis encontrarlo en este artículo.
Y listo, estas son las tres formas en las que podréis reorganizar vuestras bases de datos y cuidar un poco más la salud de vuestro servidor SQL Server.
Espero que os haya sido útil.
¿Todavía tienes dudas?
Si este post no ha solucionado tu problema o todavía tienes dudas sobre este o cualquier otro asunto relacionado con SQL Server, puedes enviarme un mensaje o solicitar una consultoría gratuita haciendo clic aquí.
Muy bueno me sirvió mucho
Me alegro!