Mover bases de datos de usuarioMove User Databases

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

En SQL ServerSQL Server, puede mover los archivos de datos, del registro y del catálogo de texto completo de una base de datos de usuario a una nueva ubicación, especificando la nueva ubicación en la cláusula FILENAME de la instrucción ALTER DATABASE .In SQL ServerSQL Server, you can move the data, log, and full-text catalog files of a user database to a new location by specifying the new file location in the FILENAME clause of the ALTER DATABASE statement. Este método se aplica para mover archivos de la base de datos dentro de la misma instancia de SQL ServerSQL Server.This method applies to moving database files within the same instance SQL ServerSQL Server. Para mover una base de datos a otra instancia de SQL ServerSQL Server o a otro servidor, use las operaciones de copias de seguridad y restauración o separar y adjuntar.To move a database to another instance of SQL ServerSQL Server or to another server, use backup and restore or detach and attach operations.

ConsideracionesConsiderations

Al mover una base de datos a otra instancia de servidor, para proporcionar una experiencia coherente a usuarios y aplicaciones, puede que tenga que volver a crear algunos o todos los metadatos de la base de datos.When you move a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all the metadata for the database. Para obtener más información, vea Administrar los metadatos cuando una base de datos pasa a estar disponible en otra instancia del servidor (SQL Server).For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server).

Algunas características de Motor de base de datos de SQL ServerSQL Server Database Engine cambian la manera en que el Motor de base de datosDatabase Engine almacena información en los archivos de base de datos.Some features of the Motor de base de datos de SQL ServerSQL Server Database Engine change the way that the Motor de base de datosDatabase Engine stores information in the database files. Estas características están restringidas a ediciones concretas de SQL ServerSQL Server.These features are restricted to specific editions of SQL ServerSQL Server. Una base de datos que contiene estas características no se puede mover a una edición de SQL ServerSQL Server que no los admita.A database that contains these features cannot be moved to an edition of SQL ServerSQL Server that does not support them. Utilice 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.Use the sys.dm_db_persisted_sku_features dynamic management view to list all edition-specific features that are enabled in the current database.

Los procedimientos descritos en este tema requieren el nombre lógico de los archivos de la base de datos.The procedures in this topic require the logical name of the database files. Para obtener el nombre, consulte la columna de nombre de la vista de catálogo sys.master_files .To obtain the name, query the name column in the sys.master_files catalog view.

A partir de SQL Server 2008 R2SQL 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.Starting with SQL Server 2008 R2SQL Server 2008 R2, full-text catalogs are integrated into the database rather than being stored in the file system. Los catálogos de texto completo se mueven ahora automáticamente al mover una base de datos.The full-text catalogs now move automatically when you move a database.

Procedimiento de reubicación planeadaPlanned Relocation Procedure

Para mover un archivo de datos o de registros como parte de una reubicación planeada, siga estos pasos:To move a data or log file as part of a planned relocation, follow these steps:

  1. Ejecute la instrucción siguiente:Run the following statement.

    ALTER DATABASE database_name SET OFFLINE;  
    
  2. Mueva el archivo o los archivos a la nueva ubicación.Move the file or files to the new location.

  3. Con cada archivo que mueva, ejecute la instrucción siguiente:For each file moved, run the following statement.

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

    ALTER DATABASE database_name SET ONLINE;  
    
  5. Compruebe el cambio de los archivos ejecutando la consulta siguiente.Verify the file change by running the following query.

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

Reubicación para el mantenimiento planeado del discoRelocation for Scheduled Disk Maintenance

Para reubicar un archivo como parte de un proceso de mantenimiento planeado del disco, siga estos pasos:To relocate a file as part of a scheduled disk maintenance process, follow these steps:

  1. Para cada archivo que se va a mover, ejecute la siguiente instrucción.For each file to be moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );  
    
  2. Detenga la instancia de SQL ServerSQL Server o cierre el sistema para realizar el mantenimiento.Stop the instance of SQL ServerSQL Server or shut down the system to perform maintenance. 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.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Mueva el archivo o los archivos a la nueva ubicación.Move the file or files to the new location.

  4. Reinicie la instancia de SQL ServerSQL Server o el servidor.Restart the instance of SQL ServerSQL Server or the server. Para obtener 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.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service

  5. Compruebe el cambio de los archivos ejecutando la consulta siguiente.Verify the file change by running the following query.

    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 erroresFailure Recovery Procedure

Si se debe mover un archivo a causa de un error de hardware, siga los pasos que se indican a continuación para reubicar el archivo.If a file must be moved because of a hardware failure, use the following steps to relocate the file to a new location.

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.If the database cannot be started, that is it is in suspect mode or in an unrecovered state, only members of the sysadmin fixed role can move the file.

  1. Detenga la instancia de SQL ServerSQL Server si se inició.Stop the instance of SQL ServerSQL Server if it is started.

  2. Inicie la instancia de SQL ServerSQL Server en modo de recuperación solo de master especificando uno de los siguientes comandos en el símbolo del sistema.Start the instance of SQL ServerSQL Server in master-only recovery mode by entering one of the following commands at the command prompt.

    • Para una instancia predeterminada (MSSQLSERVER), ejecute el siguiente comando:For the default (MSSQLSERVER) instance, run the following command.

      NET START MSSQLSERVER /f /T3608  
      
    • Para una instancia con nombre, ejecute el siguiente comando:For a named instance, run the following command.

      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.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. En cada uno de los archivos que se van a mover, use los comandos sqlcmd o SQL Server Management StudioSQL Server Management Studio para ejecutar la siguiente instrucción.For each file to be moved, use sqlcmd commands or SQL Server Management StudioSQL Server Management Studio to run the following statement.

    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.For more information about how to use the sqlcmd utility, see Use the sqlcmd Utility.

  4. Salga de la utilidad sqlcmd o SQL Server Management StudioSQL Server Management Studio.Exit the sqlcmd utility or SQL Server Management StudioSQL Server Management Studio.

  5. Detenga la instancia de SQL ServerSQL Server.Stop the instance of SQL ServerSQL Server.

  6. Mueva el archivo o los archivos a la nueva ubicación.Move the file or files to the new location.

  7. Inicie la instancia de SQL ServerSQL Server.Start the instance of SQL ServerSQL Server. Por ejemplo, ejecute: NET START MSSQLSERVER.For example, run: NET START MSSQLSERVER.

  8. Compruebe el cambio de los archivos ejecutando la consulta siguiente.Verify the file change by running the following query.

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

EjemplosExamples

En el ejemplo siguiente se mueve el archivo de registro AdventureWorks2012AdventureWorks2012 a la nueva ubicación como parte de una reubicación planeada.The following example moves the AdventureWorks2012AdventureWorks2012 log file to a new location as part of a planned relocation.

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';  

Consulte tambiénSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL de SQL Server) CREATE DATABASE (SQL Server Transact-SQL)
Adjuntar y separar bases de datos (SQL Server) Database Detach and Attach (SQL Server)
Mover bases de datos del sistema Move System Databases
Mover archivos de base de datos Move Database Files
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
RESTORE (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 BrowserStart, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service