Compartir a través de


Trasladar bases de datos de usuario

En SQL Server, puede mover los archivos de catálogo de datos, registro y texto completo de una base de datos de usuario a una nueva ubicación especificando la nueva ubicación del archivo en la cláusula FILENAME de la instrucción ALTER DATABASE . Este método se aplica 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 de desacoplamiento y acoplamiento.

Consideraciones

Al mover una base de datos a otra instancia de servidor, para proporcionar una experiencia coherente a los usuarios y aplicaciones, es posible que tenga que volver a crear algunos o todos los metadatos de la base de datos. Para obtener más información, consulte Administración de los metadatos cuando una base de datos pasa a estar disponible en otro servidor (SQL Server).

Algunas características del motor de base de datos de SQL Server cambian la forma en que el motor de base de datos almacena información en los archivos de base de datos. Estas características están restringidas a ediciones concretas de SQL Server. No se puede mover una base de datos que contenga estas características a una edición de SQL Server que no las admita. Use la vista de administración dinámica sys.dm_db_persisted_sku_features para enumerar todas las características específicas de la edición que están habilitadas en la base de datos actual.

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

A partir de SQL Server 2008 R2, los catálogos de texto completo se integran en la base de datos en lugar de almacenarse en el sistema de archivos. Los catálogos de texto completo ahora se mueven automáticamente al mover una base de datos.

Procedimiento de reubicación planeada

Para mover un archivo de datos o de registro como parte de una reubicación planeada, siga estos pasos:

  1. Ejecute la siguiente instrucción.

    ALTER DATABASE database_name SET OFFLINE;  
    
  2. Mueva el archivo o los archivos a la nueva ubicación.

  3. Para cada archivo movido, ejecute la instrucción siguiente.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );  
    
  4. Ejecute la siguiente instrucción.

    ALTER DATABASE database_name SET ONLINE;  
    
  5. Para comprobar el cambio de archivo, ejecute la consulta siguiente.

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

Reubicación por mantenimiento programado de discos

Para reubicar un archivo como parte de un proceso de mantenimiento de disco programado, siga estos pasos:

  1. Para que se mueva cada archivo, ejecute la instrucción siguiente.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );  
    
  2. Detenga la instancia de SQL Server o apague el sistema para realizar el mantenimiento. Para obtener más información, vea Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent o SQL Server Browser Service.

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

  4. Reinicie la instancia de SQL Server o el servidor. Para obtener más información, vea Iniciar, Detener, Pausar, Reanudar, Reiniciar el motor de base de datos, agente SQL Server o servicio SQL Server Browser.

  5. Para comprobar el cambio de archivo, ejecute la consulta siguiente.

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

Procedimiento de recuperación de errores

Si se debe mover un archivo debido a un error de hardware, siga estos pasos para reubicar el archivo en una nueva ubicación.

Importante

Si no se puede iniciar la base de datos, es decir, está en modo sospechoso o en un estado irrecuperado, solo los miembros del rol fijo sysadmin pueden mover el archivo.

  1. Detenga la instancia de SQL Server si se inicia.

  2. Inicie la instancia de SQL Server en modo de recuperación solo maestro escribiendo uno de los siguientes comandos en el símbolo del sistema.

    • 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 obtener más información, vea Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent o SQL Server Browser Service.

  3. Para que se mueva cada archivo, use comandos sqlcmd o SQL Server Management Studio para ejecutar la instrucción siguiente.

    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.

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

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

  8. Para comprobar el cambio de archivo, ejecute la consulta siguiente.

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

Ejemplos

En el ejemplo siguiente se mueve el archivo de registro AdventureWorks2012 a una nueva ubicación como parte de una reubicación planeada.

USE master;  
GO  
-- Return the logical file name.  
SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files  
WHERE database_id = DB_ID(N'AdventureWorks2012')  
    AND type_desc = N'LOG';  
GO  
ALTER DATABASE AdventureWorks2012 SET OFFLINE;  
GO  
-- Physically move the file to a new ___location.  
-- In the following statement, modify the path specified in FILENAME to  
-- the new ___location of the file on your server.  
ALTER DATABASE AdventureWorks2012   
    MODIFY FILE ( NAME = AdventureWorks2012_Log,   
                  FILENAME = 'C:\NewLoc\AdventureWorks2012_Log.ldf');  
GO  
ALTER DATABASE AdventureWorks2012 SET ONLINE;  
GO  
--Verify the new ___location.  
SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files  
WHERE database_id = DB_ID(N'AdventureWorks2012')  
    AND type_desc = N'LOG';  

Véase también

ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL de SQL Server)
Adjuntar y separar bases de datos (SQL Server)
Mover bases de datos del sistema
Mover archivos de base de datos
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
Iniciar, detener, pausar, reanudar y reiniciar el motor de base de datos, Agente SQL Server o el Servicio SQL Server Browser