viernes, junio 19, 2009

Como mover una DB o archivo de una DB MSSQL a otro disco

Curiosamente, esta pregunta me la hecho ya un par de ocasiones distintas personas en unos pocos días, por tal motivo realizo este post con la información pertinente de como hacerlo.

Pero antes de avanzar, la pregunta obligada es ¿Porque mover la DB o algún archivo de la DB a otro disco? Bueno, las causas pueden ser muchas, pero algunas de la posibles son:

  • El MSSQL Server por default instalo sus base de datos como master, model, tempdb en el mismo disco duro donde esta instalado el sistema operativo, esta es una mala practica.
  • El disco donde tenemos las DB ya esta a punto de llenarse o ya se lleno.
  • Por cuestiones de rendimiento es mejor mover tempdb, cuando se generan reportes complejos, a otro disco diferente a donde están las DBs con datos.
  • Igual por cuestiones de rendimiento es aceptable el mover los archivos de log del disco donde están los datafiles a otro diferente.

Para realizar esta operación hay que seguir los siguientes pasos:

Abrir el query analyzer y para mover, por ejemplo la db tempdb hay que ejecutar primero el siguiente comando para obtener información de ella:

USE TempDB
GO
EXEC sp_helpfile
GO

Esta nos va a mostrar información similar a la siguiente:

name fileid filename filegroup size
——- —— ————————————————————– ———- ——-
tempdev 1 C:Program FilesMicrosoft SQL ServerMSSQLdatatempdb.mdf PRIMARY 16000 KB
templog 2 C:Program FilesMicrosoft SQL ServerMSSQLdatatemplog.ldf NULL 1024 KB

Este resultado nos indica la ruta de donde están los archivos que deseamos mover.

Lo importante aquí es anotar los nombres de la primer columna porque los vamos a necesitar en el siguiente paso:

USE master
GO
ALTER DATABASE TempDB MODIFY FILE
( NAME = <FILE1>, FILENAME = '<FILEPATH1>.mdf' )
GO
ALTER DATABASE TempDB MODIFY FILE
( NAME = <FILE2>, FILENAME = '<FILEPATH2>.ldf' )
GO

Hay que reemplazar <FILE1> y <FILE2> con los nombre obtenidos en el primer script y también reemplazar <FILEPATH1> Y <FILEPATH2> con la ruta completa y el nombre de archivo a donde se van a mover - aunque todavía no se hayan movido - los archivos, una vez que el script esta correcto, hay que ejecutarlo; posteriormente hay que apagar el servicio del servidor de sql.

Una vez apagado el servicio de sql, hay que ir al disco duro y mover los archivos de su ubicación original - ver resultado del primer script -, para ponerlos en la nueva ruta que indicamos en el segundo script.

El ultimo paso consiste en iniciar el servicio del sql server y este ya debe de estar haciendo uso de la nueva ubicación de los archivos.


No hay comentarios.: