Restaurar una base de datos a una nueva ubicación (SQL Server)Restore a Database to a New Location (SQL Server)

En este tema se explica cómo restaurar una base de datos de SQL ServerSQL Server en una nueva ubicación y, opcionalmente, cómo cambiar el nombre de la base de datos, en SQL Server 2017SQL Server 2017 mediante SQL Server Management Studio(SSMS) o Transact-SQLTransact-SQL.This topic describes how to restore a SQL ServerSQL Server database to a new location, and optionally rename the database, in SQL Server 2017SQL Server 2017 by using SQL Server Management Studio(SSMS) or Transact-SQLTransact-SQL. Puede mover una base de datos a una nueva ruta de acceso de directorio o crear una copia de una base de datos en la misma instancia de servidor o en una instancia de servidor diferente.You can move a database to a new directory path or create a copy of a database on either the same server instance or a different server instance.

Antes de comenzar Before you begin!

Limitaciones y restricciones Limitations and restrictions

  • El administrador del sistema encargado de restaurar una copia de seguridad de la base de datos completa debe ser la única persona que esté utilizando la base de datos que se va a restaurar.The system administrator restoring a full database backup must be the only person currently using the database to be restored.

Requisitos previos Prerequisites

  • En el modelo de recuperación optimizado para cargas masivas de registros o completo, para poder restaurar una base de datos, se debe realizar una copia de seguridad del registro de transacciones activo.Under the full or bulk-logged recovery model, before you can restore a database, you must back up the active transaction log. Para obtener más información, vea Realizar copia de seguridad de un registro de transacciones (SQL Server).For more information, see Back Up a Transaction Log (SQL Server).

  • Para restaurar una base de datos cifrada, debe tener acceso al certificado o la clave asimétrica usados para cifrar la base de datos.To restore an encrypted database, you must have access to the certificate or asymmetric key used to encrypt the database! La base de datos no se puede restaurar sin el certificado o la clave asimétrica.Without that certificate or asymmetric key, you cannot retore the database. Debe conservar el certificado usado para cifrar la clave de cifrado de base de datos durante el tiempo que necesite guardar la copia de seguridad.You must retain that certificate used to encrypt the database encryption key for as long as you need the backup! Para obtener más información, consulte SQL Server Certificates and Asymmetric Keys.For more information, see SQL Server Certificates and Asymmetric Keys.

Recomendaciones Recommendations

  • Para consideraciones adicionales sobre cómo mover una base de datos, consulte Copiar bases de datos con Copias de seguridad y restauración.For additional considerations for moving a database, see Copy Databases with Backup and Restore.

  • Si restaura una base de datos de Resultado deSQL Server 2005 o posterior a SQL Server 2017SQL Server 2017, la base de datos se actualiza automáticamente.If you restore a Resultado deSQL Server 2005 or higher database to SQL Server 2017SQL Server 2017, the database is automatically upgraded. Normalmente, la base de datos está disponible inmediatamente.Typically, the database becomes available immediately. Pero si la base de datos de Resultado deSQL Server 2005 tiene índices de texto completo, el proceso de actualización los importa, los restablece o los vuelve a generar, en función del valor de la propiedad del servidor upgrade_option .However, if a Resultado deSQL Server 2005 database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the upgrade_option server property. Si la opción de actualización se establece en importar (upgrade_option = 2) o en volver a generar (upgrade_option = 0), los índices de texto completo no estarán disponibles durante la actualización.If the upgrade option is set to import (upgrade_option = 2) or rebuild (upgrade_option = 0), the full-text indexes will be unavailable during the upgrade. Dependiendo de la cantidad de datos que se indicen, la importación puede requerir varias horas y volver a generar puede requerir hasta diez veces más.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. Observe también que cuando la opción de actualización se establece en importar, se vuelven a generar los índices de texto completo asociados si no se dispone de un catálogo de texto completo.Note also that when the upgrade option is set to import, the associated full-text indexes are rebuilt if a full-text catalog is not available. Para cambiar el valor de la propiedad de servidor upgrade_option , use sp_fulltext_service.To change the setting of the upgrade_option server property, use sp_fulltext_service.

Seguridad Security

Por razones de seguridad, se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza.For security purposes, we recommend that you do not attach or restore databases from unknown or untrusted sources. Es posible que dichas bases de datos contengan código malintencionado que podría ejecutar código Transact-SQLTransact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Para usar una base de datos desde un origen desconocido o que no sea de confianza, ejecute DBCC CHECKDB en la base de datos de un servidor que no sea de producción y examine también el código, como procedimientos almacenados u otro código definido por el usuario, en la base de datos.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

Permisos Permissions

Si la base de datos que se va a restaurar no existe, el usuario debe tener permisos CREATE DATABASE para poder ejecutar RESTORE.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. Si la base de datos existe, los permisos RESTORE corresponden de forma predeterminada a los miembros de los roles fijos de servidor sysadmin y dbcreator , y al propietario (dbo) de la base de datos.If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database.

Los permisos RESTORE se conceden a los roles en los que la información acerca de la pertenencia está siempre disponible para el servidor.RESTORE permissions are given to roles in which membership information is always readily available to the server. Debido a que la pertenencia a un rol fijo de base de datos solo se puede comprobar cuando la base de datos es accesible y no está dañada, lo que no siempre ocurre cuando se ejecuta RESTORE, los miembros del rol fijo de base de datos db_owner no tienen permisos RESTORE.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Restaurar una base de datos en una nueva ubicación; opcionalmente, cambiar el nombre de la base de datos con SSMSRestore a database to a new location; optionally rename the database using SSMS

  1. Conéctese a la instancia adecuada de Motor de base de datos de SQL ServerSQL Server Database Enginey después, en el Explorador de objetos, haga clic en el nombre del servidor para expandir el árbol.Connect to the appropriate instance of the Motor de base de datos de SQL ServerSQL Server Database Engine, and then in Object Explorer, click the server name to expand the server tree.

  2. Haga clic con el botón derecho en Bases de datosy, luego, haga clic en Restaurar base de datos.Right-click Databases, and then click Restore Database. Se abre el cuadro de diálogo Restaurar base de datos .The Restore Database dialog box opens.

  3. En la página General , use la sección Origen para especificar el origen y la ubicación de los conjuntos de copias de seguridad que se deben restaurar.On the General page, use the Source section to specify the source and location of the backup sets to restore. Seleccione una de las siguientes opciones:Select one of the following options:

    • Base de datosDatabase

      Seleccione la base de datos que desea restaurar en la lista desplegable.Select the database to restore from the drop-down list. La lista solo contiene las bases de datos de las que se han realizado copias de seguridad de acuerdo con el historial de copias de seguridad de msdb .The list contains only databases that have been backed up according to the msdb backup history.

    NOTA: Si la copia de seguridad se toma desde un servidor diferente, el servidor de destino no tendrá la información del historial de copia de seguridad de la base de datos especificada.NOTE: If the backup is taken from a different server, the destination server will not have the backup history information for the specified database. En este caso, seleccione Dispositivo para especificar manualmente el archivo o dispositivo que se va a restaurar.In this case, select Device to manually specify the file or device to restore.

    1. DispositivoDevice

      Haga clic en el botón Examinar...para abrir el cuadro de diálogo Seleccionar dispositivos de copia de seguridad .Click the browse (...) button to open the Select backup devices dialog box. En el cuadro Tipo de medio de copia de seguridad , seleccione uno de los tipos de dispositivo.In the Backup media type box, select one of the listed device types. Para seleccionar uno o varios dispositivos del cuadro Medio de copia de seguridad , haga clic en Agregar.To select one or more devices for the Backup media box, click Add.

      Después de agregar los dispositivos que desee al cuadro de lista Medio de copia de seguridad , haga clic en Aceptar para volver a la página General .After you add the devices you want to the Backup media list box, click OK to return to the General page.

      En el cuadro de lista Origen: Dispositivo: Base de datos , seleccione el nombre de la base de datos que se debe restaurar.In the Source: Device: Database list box, select the name of the database which should be restored.

      Nota : esta lista solo está disponible cuando se selecciona Dispositivo .Note This list is only available when Device is selected. Solo estarán disponibles las bases de datos que tienen copias de seguridad en el dispositivo seleccionado.Only databases that have backups on the selected device will be available.

  4. En la sección Destino , el cuadro Base de datos se rellena automáticamente con el nombre de la base de datos que se va a restaurar.In the Destination section, the Database box is automatically populated with the name of the database to be restored. Para cambiar el nombre de la base de datos, especifique el nuevo nombre en el cuadro Base de datos .To change the name of the database, enter the new name in the Database box.

  5. En el cuadro Restaurar en , deje el valor predeterminado A la última copia de seguridad tomada o haga clic en Escala de tiempo para acceder al cuadro de diálogo Escala de tiempo de copia de seguridad para seleccionar manualmente un momento a fin de que se detenga la acción de recuperación.In the Restore to box, leave the default as To the last backup taken or click on Timeline to access the Backup Timeline dialog box to manually select a point in time to stop the recovery action. Vea Backup Timeline para obtener más información acerca de cómo designar un momento específico.See Backup Timeline for more information on designating a specific point in time.

  6. En la cuadrícula Conjuntos de copia de seguridad que se van a restaurar , seleccione las copias de seguridad que desea restaurar.In the Backup sets to restore grid, select the backups to restore. En esta cuadrícula se muestran las copias de seguridad disponibles en la ubicación especificada.This grid displays the backups available for the specified location. De forma predeterminada, se sugiere un plan de recuperación.By default, a recovery plan is suggested. Para anular el plan de recuperación sugerido, puede cambiar las selecciones de la cuadrícula.To override the suggested recovery plan, you can change the selections in the grid. Se anula automáticamente la selección de las copias de seguridad que dependen de la restauración de una copia de seguridad anterior cuando se anula la selección de una copia de seguridad anterior.Backups that depend on the restoration of an earlier backup are automatically deselected when the earlier backup is deselected.

    Para obtener información sobre las columnas de la cuadrícula Conjuntos de copia de seguridad para restaurar, vea Restaurar la base de datos (página General).For information about the columns in the Backup sets to restore grid, see Restore Database (General Page).

  7. Para especificar la nueva ubicación de los archivos de base de datos, seleccione la página Archivos y, a continuación, haga clic Reubicar todos los archivos en la carpeta.To specify the new location of the database files, select the Files page, and then click Relocate all files to folder. Proporcione una nueva ubicación para Carpeta de archivos de datos y Carpeta de archivos de registro.Provide a new location for the Data file folder and Log file folder. Para obtener más información sobre esta cuadrícula, vea Restaurar base de datos (página Archivos).For more information about this grid, see Restore Database (Files Page).

  8. Si lo desea, en la página Opciones ajuste las opciones.On the Options page, adjust the options if you want. Para obtener más información sobre estas opciones, vea Restaurar base de datos (página Opciones).For more information about these options, see Restore Database (Options Page).

    Restaurar una base de datos en una nueva ubicación; opcionalmente, cambiar el nombre de la base de datos mediante T-SQLRestore database to a new location; optionally rename the database using T-SQL

  9. Opcionalmente, determine los nombres lógicos y físicos de los archivos del conjunto de copia de seguridad que contiene la copia de seguridad de base de datos completa que desea restaurar.Optionally, determine the logical and physical names of the files in the backup set that contains the full database backup that you want to restore. Esta instrucción devuelve una lista con los archivos de base de datos y de registro del conjunto de copia de seguridad.This statement returns a list of the database and log files contained in the backup set. La sintaxis básica es la siguiente:The basic syntax is as follows:

    RESTORE FILELISTONLY FROM WITH FILE = backup_set_file_numberRESTORE FILELISTONLY FROM WITH FILE = backup_set_file_number

    Aquí, backup_set_file_number indica la posición de la copia de seguridad en el conjunto de medios.Here, backup_set_file_number indicates the position of the backup in the media set. Puede obtener la posición de un conjunto de copia de seguridad utilizando la instrucción RESTORE HEADERONLY .You can obtain the position of a backup set by using the RESTORE HEADERONLY statement. Para obtener más información, vea "Especificar un conjunto de copia de seguridad" en RESTORE (argumentos, Transact-SQL).For more information, see "Specifying a Backup Set" in RESTORE Arguments (Transact-SQL).

    Esta instrucción también admite varias opciones WITH.This statement also supports a number of WITH options. Para obtener más información, vea RESTORE FILELISTONLY (Transact-SQL).For more information, see RESTORE FILELISTONLY (Transact-SQL).

  10. Use la instrucción RESTORE DATABASE para restaurar la copia de seguridad completa de la base de datos.Use the RESTORE DATABASE statement to restore the full database backup. De manera predeterminada, los archivos de datos y de registro se restauran en sus ubicaciones originales.By default, data and log files are restored to their original locations. Para cambiar la ubicación de una base de datos, use la opción MOVE para mover cada uno de los archivos de la base de datos y evitar conflictos con los archivos existentes.To relocate a database, use the MOVE option to relocate each of the database files and to avoid collisions with existing files.

    A continuación se muestra la sintaxis básica de Transact-SQLTransact-SQL para restaurar la base de datos en una ubicación nueva y con un nombre nuevo:The basic Transact-SQLTransact-SQL syntax for restoring the database to a new location and a new name is:

    RESTORE DATABASE new_database_nameRESTORE DATABASE new_database_name

    FROM backup_device [ ,...n ]FROM backup_device [ ,...n ]

    [ WITH[ WITH

    {{

    [ RECOVERY | NORECOVERY ][ RECOVERY | NORECOVERY ]

    [ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ][ , ] [ FILE ={ backup_set_file_number | @backup_set_file_number } ]

    [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ][ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]

    }}

    ;;

    NOTA:NOTE! Cuando prepare la reubicación de una base de datos en un disco diferente, compruebe si hay espacio suficiente e identifique cualquier posible conflicto con los archivos existentes.When preparing to relocate a database on a different disk, you should verify that sufficient space is available and identify any potential collisions with existing files. Para ello, se usa una instrucción RESTORE VERIFYONLY que especifica los mismos parámetros MOVE que tiene previsto usar en la instrucción RESTORE DATABASE.This involves using a RESTORE VERIFYONLY statement that specifies the same MOVE parameters that you plan to use in your RESTORE DATABASE statement.

    En la tabla siguiente se describen los argumentos de esta instrucción RESTORE para restaurar una base de datos en una nueva ubicación.The following table describes arguments of this RESTORE statement in terms of restoring a database to a new location. Para obtener más información sobre estos argumentos, vea RESTORE (Transact-SQL).For more information about these arguments, see RESTORE (Transact-SQL).

    new_database_namenew_database_name
    El nuevo nombre para la base de datos.The new name for the database.

    NOTA: Si va a restaurar la base de datos en otra instancia de servidor, puede usar el nombre original de la base de datos en lugar de uno nuevo.NOTE: If you are restoring the database to a different server instance, you can use the original database name instead of a new name.

    backup_device [ ,...n ]backup_device [ ,...n ]
    Especifica una lista que contiene entre 1 y 64 dispositivos de copia de seguridad (separados por comas) desde los que se restaurará la copia de seguridad de la base de datos.Specifies a comma-separated list of from 1 to 64 backup devices from which the database backup is to be restored. Puede especificar un dispositivo físico de copia de seguridad o puede especificar el dispositivo de copia de seguridad lógico correspondiente, si se definió.You can specify a physical backup device, or you can specify a corresponding logical backup device, if defined. Para especificar un dispositivo de copia de seguridad físico, use la opción DISK o TAPE:To specify a physical backup device, use the DISK or TAPE option:

    { DISK | TAPE } =physical_backup_device_name{ DISK | TAPE } =physical_backup_device_name

    Para obtener más información, vea Dispositivos de copia de seguridad (SQL Server).For more information, see Backup Devices (SQL Server).

    { RECOVERY | NORECOVERY }{ RECOVERY | NORECOVERY }
    Si la base de datos usa el modelo de recuperación completa, es posible que deba aplicar copias de seguridad de registros de transacciones después de restaurar la base de datos.If the database uses the full recovery model, you might need to apply transaction log backups after you restore the database. En este caso, especifique la opción NORECOVERY.In this case, specify the NORECOVERY option.

    En caso contrario, use la opción RECOVERY, que es la predeterminada.Otherwise, use the RECOVERY option, which is the default.

    FILE = { backup_set_file_number | @backup_set_file_number }FILE = { backup_set_file_number | @backup_set_file_number }
    Identifica el conjunto de copia de seguridad que se va a restaurar.Identifies the backup set to be restored. Por ejemplo, si backup_set_file_number es 1 , indica el primer conjunto de copia de seguridad del medio de copia, y si backup_set_file_number es 2 , indica el segundo conjunto de copia de seguridad.For example, a backup_set_file_number of 1 indicates the first backup set on the backup medium and a backup_set_file_number of 2 indicates the second backup set. Puede obtener el valor backup_set_file_number de un conjunto de copia de seguridad mediante la instrucción RESTORE HEADERONLY .You can obtain the backup_set_file_number of a backup set by using the RESTORE HEADERONLY statement.

    Cuando no se especifica esta opción, el comportamiento predeterminado es usar el primer conjunto de copia de seguridad del dispositivo de copia de seguridad.When this option is not specified, the default is to use the first backup set on the backup device.

    Para obtener más información, vea "Especificar un conjunto de copia de seguridad" en RESTORE (argumentos, Transact-SQL).For more information, see "Specifying a Backup Set," in RESTORE Arguments (Transact-SQL).

    MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
    Especifica que el archivo de datos o de registro especificado por logical_file_name_in_backup debe restaurarse en la ubicación especificada por operating_system_file_name.Specifies that the data or log file specified by logical_file_name_in_backup is to be restored to the location specified by operating_system_file_name. Especifique una instrucción MOVE para cada archivo lógico del conjunto de copia de seguridad que desee restaurar en otra ubicación.Specify a MOVE statement for every logical file you want to restore from the backup set to a new location.

    OpciónOption DescripciónDescription
    logical_file_name_in_backuplogical_file_name_in_backup Especifica el nombre lógico de un archivo de datos o de registro del conjunto de copia de seguridad.Specifies the logical name of a data or log file in the backup set. El nombre de archivo lógico de un archivo de datos o de registro de un conjunto de copia de seguridad coincide con el nombre lógico que tenía en la base de datos cuando se creó el conjunto de copia de seguridad.The logical file name of a data or log file in a backup set matches its logical name in the database when the backup set was created.



    Nota: Use RESTORE FILELISTONLYpara obtener una lista de los archivos lógicos del conjunto de copia de seguridad.Note: To obtain a list of the logical files from the backup set, use RESTORE FILELISTONLY.
    operating_system_file_nameoperating_system_file_name Especifica una nueva ubicación para el archivo especificado por logical_file_name_in_backup.Specifies a new location for the file specified by logical_file_name_in_backup. El archivo se restaurará en esta ubicación.The file will be restored to this location.

    Opcionalmente, operating_system_file_name especifica un nombre de archivo nuevo para el archivo restaurado.Optionally, operating_system_file_name specifies a new file name for the restored file. Lo cual sería necesario si fuese a crear una copia de una base de datos existente en la misma instancia de servidor.This is necessary if you are creating a copy of an existing database on the same server instance.
    nn Es un marcador de posición que indica que puede especificar instrucciones MOVE adicionales.Is a placeholder indicating that you can specify additional MOVE statements.

Ejemplo (Transact-SQL) Example (Transact-SQL)

En este ejemplo se crea una base de datos denominada MyAdvWorks restaurando una copia de seguridad de la base de datos de ejemplo AdventureWorks2012AdventureWorks2012 , que incluye dos archivos: AdventureWorks2012AdventureWorks2012_Data y AdventureWorks2012AdventureWorks2012_Log.This example creates a new database named MyAdvWorks by restoring a backup of the AdventureWorks2012AdventureWorks2012 sample database, which includes two files: AdventureWorks2012AdventureWorks2012_Data and AdventureWorks2012AdventureWorks2012_Log. Esta base de datos usa el modelo de recuperación simple.This database uses the simple recovery model. La base de datos AdventureWorks2012AdventureWorks2012 ya existe en la instancia de servidor y, por lo tanto, los archivos de la copia de seguridad deben restaurarse en una nueva ubicación.The AdventureWorks2012AdventureWorks2012 database already exists on the server instance, so the files in the backup must be restored to a new location. La instrucción RESTORE FILELISTONLY se utiliza para determinar el número y los nombres de los archivos de la base de datos que se restaura.The RESTORE FILELISTONLY statement is used to determine the number and names of the files in the database being restored. La copia de seguridad de la base de datos es el primer conjunto de copia de seguridad del dispositivo de copia de seguridad.The database backup is the first backup set on the backup device.

NOTA: En los ejemplos de copia de seguridad y restauración del registro de transacciones, que incluyen restauraciones a un momento dado, se usa la base de datos MyAdvWorks_FullRM, creada a partir de AdventureWorks2012AdventureWorks2012 igual que en el siguiente ejemplo MyAdvWorks.NOTE: The examples of backing up and restoring the transaction log, including point-in-time restores, use the MyAdvWorks_FullRM database that is created from AdventureWorks2012AdventureWorks2012 just like the following MyAdvWorks example. Sin embargo, la base de datos MyAdvWorks_FullRM resultante debe cambiarse para utilizar el modelo de recuperación completa mediante la siguiente instrucción Transact-SQLTransact-SQL: ALTER DATABASE SET RECOVERY FULL.However, the resulting MyAdvWorks_FullRM database must be changed to use the full recovery model by using the following Transact-SQLTransact-SQL statement: ALTER DATABASE SET RECOVERY FULL.

USE master;  
GO  
-- First determine the number and names of the files in the backup.  
-- AdventureWorks2012_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2012_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2012_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';  
GO  

Para obtener un ejemplo de cómo crear una copia de seguridad completa de la base de datos AdventureWorks2012AdventureWorks2012 , vea Crear una copia de seguridad completa de base de datos (SQL Server).For an example of how to create a full database backup of the AdventureWorks2012AdventureWorks2012 database, see Create a Full Database Backup (SQL Server).

Vea tambiénSee also

Administrar los metadatos cuando una base de datos pasa a estar disponible en otra instancia del servidor (SQL Server) Manage Metadata When Making a Database Available on Another Server Instance (SQL Server)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Copiar bases de datos con Copias de seguridad y restauración Copy Databases with Backup and Restore