Share via


Mover bases de datos del sistema

En este tema se describe cómo mover bases de datos del sistema en SQL Server. Mover bases de datos del sistema puede resultar útil en las situaciones siguientes:

  • Recuperación de un error. Por ejemplo, la base de datos se encuentra en modo sospechoso o se ha cerrado a causa de un error de hardware.

  • Reubicación planeada.

  • Reubicación para el mantenimiento planeado del disco.

Los procedimientos siguientes se aplican a mover archivos de base de datos dentro de la misma instancia de SQL Server. Para mover una base de datos a otra instancia de SQL Server o a otro servidor, use las operaciones de copia de seguridad y restauración o desasociación y asociación.

Los procedimientos descritos en este tema requieren el nombre lógico de los archivos de la base de datos. Para obtener el nombre, consulte la columna de nombre de la vista de catálogo sys.master_files .

Importante

Si se mueve una base de datos del sistema y posteriormente se vuelve a generar la base de datos maestra, se debe mover de nuevo la base de datos del sistema porque la operación de regeneración instala todas las bases de datos del sistema en su ubicación predeterminada.

En este tema

Procedimiento de reubicación planeada y mantenimiento de disco programado

Para mover un archivo de registro o datos de bases de datos del sistema como parte de una operación de reubicación planeada o de mantenimiento programado, siga estos pasos. Este procedimiento se aplica a todas las bases de datos del sistema, excepto las bases de datos maestras y Resource.

  1. Para cada archivo que se va a mover, ejecute la siguiente instrucción.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    
  2. Detenga la instancia de SQL Server o cierre el sistema para realizar el mantenimiento. Para más información, consulte Iniciar, detener, pausar, reanudar y reiniciar el motor de base de datos, Agente SQL Server o el Servicio SQL Server Browser.

  3. Mueva el archivo o los archivos a la nueva ubicación.

  4. Reinicie la instancia de SQL Server o el servidor. Para más información, consulte Iniciar, detener, pausar, reanudar y reiniciar el motor de base de datos, Agente SQL Server o el Servicio SQL Server Browser.

  5. Compruebe el cambio de los archivos ejecutando la consulta siguiente.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Si se mueve la base de datos msdb y la instancia de SQL Server se configura para Correo electrónico de base de datos, complete estos pasos adicionales.

  1. Compruebe que Service Broker está habilitado para la base de datos msdb mediante la ejecución de la consulta siguiente.

    SELECT is_broker_enabled   
    FROM sys.databases  
    WHERE name = N'msdb';  
    

    Para obtener más información sobre cómo habilitar Service Broker, vea ALTER DATABASE (Transact-SQL) .

  2. Envíe un mensaje de correo electrónico para comprobar que el Correo electrónico de base de datos funciona.

Procedimiento de recuperación de errores

Si se debe mover un archivo a causa de un error de hardware, siga los pasos que se indican a continuación para colocar el archivo en otra ubicación. Este procedimiento se aplica a todas las bases de datos del sistema, excepto las bases de datos maestras y Resource.

Importante

Si no se puede iniciar la base de datos, es decir, si se encuentra en modo sospechoso o en un estado no recuperado, solo los miembros del rol fijo sysadmin podrán mover el archivo.

  1. Detenga la instancia de SQL Server si se inició.

  2. Inicie la instancia de SQL Server en modo de recuperación solo de master especificando uno de los siguientes comandos en el símbolo del sistema. Los parámetros especificados en estos comandos distinguen entre mayúsculas y minúsculas. Los comandos generan un error cuando los parámetros no se especifican como se indica.

    • Para la instancia predeterminada (MSSQLSERVER), ejecute el siguiente comando:

      NET START MSSQLSERVER /f /T3608  
      
    • Para una instancia con nombre, ejecute el siguiente comando:

      NET START MSSQL$instancename /f /T3608  
      

    Para más información, consulte Iniciar, detener, pausar, reanudar y reiniciar el motor de base de datos, Agente SQL Server o el Servicio SQL Server Browser.

  3. En cada uno de los archivos que se van a mover, use los comandos sqlcmd o SQL Server Management Studio para ejecutar la siguiente instrucción.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    

    Para obtener más información sobre cómo usar la utilidad sqlcmd , vea Usar la utilidad sqlcmd.

  4. Salga de la utilidad sqlcmd o SQL Server Management Studio.

  5. Detenga la instancia de SQL Server. Por ejemplo, ejecute NET STOP MSSQLSERVER.

  6. Mueva el archivo o los archivos a la nueva ubicación.

  7. Reinicie la instancia de SQL Server. Por ejemplo, ejecute NET START MSSQLSERVER.

  8. Compruebe el cambio de los archivos ejecutando la consulta siguiente.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Mover la base de datos maestra

Para mover la base de datos maestra, siga estos pasos.

  1. Desde el menú Inicio , seleccione Todos los programas, Microsoft SQL Server 2005, Herramientas de configuracióny, finalmente, haga clic en Administrador de configuración de SQL Server.

  2. En el nodo SQL Server Services, haga clic con el botón derecho en la instancia de SQL Server (por ejemplo, SQL Server (MSSQLSERVER)) y elija Propiedades.

  3. En el cuadro de diálogo Propiedades de SQL Server (instance_name), haga clic en la pestaña Parámetros de inicio.

  4. En el cuadro Parámetros existentes, seleccione el parámetro -d para mover el archivo de datos maestros. Haga clic en Actualizar para guardar el cambio.

    En el cuadro Especifique un parámetro de inicio , cambie el parámetro a la nueva ruta de acceso de la base de datos maestra.

  5. En el cuadro Parámetros existentes, seleccione el parámetro -l para mover el archivo de registro maestro. Haga clic en Actualizar para guardar el cambio.

    En el cuadro Especifique un parámetro de inicio , cambie el parámetro a la nueva ruta de acceso de la base de datos maestra.

    El valor de parámetro del archivo de datos debe ir a continuación del parámetro -d y el valor del archivo de registro debe ir a continuación del parámetro -l . En el siguiente ejemplo se muestran los valores de los parámetros para la ubicación predeterminada del archivo de datos maestros.

    -dC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    Si la reubicación planeada para el archivo de datos maestros es E:\SQLData, los valores de parámetros se cambiarán de la siguiente manera:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. Detenga la instancia de SQL Server haciendo clic con el botón derecho en el nombre de la instancia y seleccionando Detener.

  7. Mueva los archivos master.mdf y mastlog.ldf a la nueva ubicación.

  8. Reinicie la instancia de SQL Server.

  9. Compruebe el cambio de archivo de la base de datos maestra ejecutando la siguiente consulta.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID('master');  
    GO  
    

Mover la base de datos Resource

La ubicación de la base de datos de recursos es <drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<> instance_name\MSSQL\Binn\. No se puede mover la base de datos.

Seguimiento: después de mover todas las bases de datos del sistema

Si ha movido todas las bases de datos del sistema a una nueva unidad o volumen o a otro servidor con una letra de unidad diferente, realice las actualizaciones siguientes.

  • Cambie la ruta de acceso del registro del Agente SQL Server. Si no actualiza esta ruta de acceso, el Agente SQL Server no se podrá iniciar.

  • Cambie la ubicación predeterminada de la base de datos. Si la letra de unidad y la ruta de acceso especificada como ubicación predeterminada no existen, es posible que no se pueda crear una nueva base de datos.

Cambiar la ruta de acceso del registro del Agente SQL Server

  1. En SQL Server Management Studio, en el Explorador de objetos, expanda Agente SQL Server.

  2. Haga clic con el botón derecho en Registros de errores y haga clic en Configurar.

  3. En el cuadro de diálogo Configurar registros de errores del Agente SQL Server , especifique la nueva ubicación del archivo SQLAGENT.OUT. La ubicación predeterminada es C:\Archivos de programa\Microsoft SQL Server\MSSQL12.<>instance_name\MSSQL\Log\.

Cambiar la ubicación predeterminada de la base de datos

  1. En SQL Server Management Studio, en el Explorador de objetos, haga clic con el botón derecho en el servidor de SQL Server y, después, haga clic en Propiedades.

  2. En el cuadro de diálogo Propiedades del servidor , seleccione Configuración de base de datos.

  3. En Ubicaciones predeterminadas de la base de datos, busque la nueva ubicación de los archivos de registro y datos.

  4. Detenga e inicie el servicio SQL Server para completar el cambio.

Ejemplos

A. Mover la base de datos tempdb

En el ejemplo siguiente se mueven los archivos de datos y registro de tempdb a una nueva ubicación como parte de una reubicación planeada.

Nota

Dado que tempdb se vuelve a crear cada vez que se inicia la instancia de SQL Server, no es necesario mover físicamente los archivos de datos y de registro. Los archivos se crean en la ubicación nueva cuando se reinicia el servicio en el paso 3. Hasta que se reinicie el servicio, tempdb continúa utilizando los archivos de datos y de registro de la ubicación existente.

  1. Determine los nombres de los archivos lógicos de la base de datos tempdb y su ubicación actual en el disco.

    SELECT name, physical_name AS CurrentLocation  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    GO  
    
  2. Cambie la ubicación de cada archivo con ALTER DATABASE.

    USE master;  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');  
    GO  
    
  3. Detenga y reinicie la instancia de SQL Server.

  4. Compruebe el cambio de los archivos.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    
  5. Elimine los archivos tempdb.mdf y templog.ldf de la ubicación original.

Consulte también

Base de datos Resource
Base de datos tempdb
Base de datos maestra
Base de datos msdb
Base de datos model
Mover bases de datos de usuario
Mover archivos de base de datos
Iniciar, detener, pausar, reanudar y reiniciar el motor de base de datos, Agente SQL Server o el Servicio SQL Server Browser
ALTER DATABASE (Transact-SQL)
Volver a generar bases de datos del sistema