Marko Radakovic

Cómo poder mover archivos de base de datos SQL (MDF y LDF) a otra ubicación

September 16, 2019 by

¿Con qué frecuencia usted llega al punto de que, por algún motivo, no tiene el suficiente espacio en un disco específico para poder almacenar una base de datos? En el caso de realizar el desarrollo de la base de datos u otras tareas fuera del entorno de producción, esto no debería ser un problema, debido a que una base de datos puede volver a crearse, restaurarse desde una copia de seguridad y configurarse para alojarse en otra ubicación. Por defecto, SQL Server guarda los archivos de la base de datos en su carpeta de instalación, específicamente en la carpeta DATA:

Entonces, ¿qué sucede si es que una base de datos SQL es de producción o si la aplicación específica la usa constantemente? Esto quiere decir que cuando se trata de un espacio de disco reducido, debe existir alguna manera de mover los archivos de la base de datos (MDF y LDF) a otra unidad (con suficiente espacio en el disco duro) mientras tanto la base de datos real seguirá siendo alojada por el mismo SQL Instancia del servidor. Veamos cómo mover archivos de base de datos a otra ubicación. Utilizaremos una base de datos de ejemplo de AdventureWorks en este caso.

Prerrequisitos

En caso de que los servicios de Windows u otros recursos utilicen una base de datos, deben detenerse estos para poder permitir la modificación de los archivos de la base de datos SQL. Adicionalmente, cualquier conexión existente a una base de datos debe estar cerrada. Antes de dar el primer paso, asegúrese de ubicar los archivos MDF y LDF apropiados para la base de datos con las que desea trabajar. Por defecto, estos nombres están en el siguiente formato:

  • Database_name_Data.mdf – para el archivo MDF
  • Database_name_log.ldf – para el archivo LDF

Las extensiones mencionadas anteriormente no van a ser necesariamente utilizados, así que asegúrese de estar apuntando a los archivos correctos.

Mover archivos de base de datos a otra ubicación

  • Ejecute el siguiente script de SQL para poder establecer una nueva ubicación para los archivos de base de datos SQL:

New_location es una nueva carpeta creada en una unidad separada (en este caso específico, cambiaremos de una unidad C a la E predeterminada en una máquina local) con el suficiente espacio en disco para los archivos de la base de datos SQL. La carpeta especificada debe ser creada primeramente para poder usarse como una nueva ubicación para los archivos de la base de datos SQL en la declaración SQL anterior.

  • Ejecute el siguiente script SQL para desconectar una base de datos SQL:

Esto es muy importante para poder realizar el siguiente paso. Si alguna aplicación está utilizando una base de datos, este paso no se podrá realizar, a menos que todas las conexiones a una base de datos estén cerradas.

  • Mueva los archivos MDF y LDF de la base de datos SQL específica a una nueva ubicación especificada en la declaración anterior. Esto quiere decir que simplemente cortar los archivos mencionados de la ubicación existente y moverlos a uno recién especificado.

Nota importante: Asegúrese de que SQL Server puede acceder a la ubicación especificada. Caso contrario, aparecerá el siguiente error:

Msg 5120, Nivel 16, Estado 101, Línea 13
No se puede abrir el archivo físico “E:\New_location\AdventureWorks2014_Data.mdf”. Error del sistema operativo 5: “5(Acceso denegado.)”.

Para poder arreglar esto:

  • Inicie el Administrador de configuración de SQL Server
  • Haga clic en el botón derecho en una instancia de SQL Server que almacene una base de datos cuyos archivos se van a mover a una nueva ubicación y elija la opción Propiedades en la lista desplegable:

En lugar de usar la cuenta actual, modifique la cuenta que tiene acceso a una unidad donde se van a mover los archivos:

  • Una vez realizado esto, ya se puede establecer una base de datos en línea ejecutando la siguiente consulta para recuperar una base de datos en línea:
  • Para tratar de verificar que el proceso haya finalizado con éxito, ejecute la siguiente consulta:

Esto debería proporcionar el siguiente resultado:

Una vez realizado esto, una base de datos SQL se va a alojar en una unidad con suficiente espacio libre y el usuario podrá continuar utilizándola.


Marko Radakovic

Marko Radakovic

Marko is an IT and technical education teacher, who likes movies, video games, and heavy metal music.

He uses his spare time to play guitar, ride a bike and hang out with his friends. During winter, he likes skiing the most, but all other snow activities, too.

He is also author of various SQL Shack articles about SSIS packages and knowledgebase articles about ApexSQL Doc.

View all posts by Marko Radakovic
Marko Radakovic
1,027 Views