Mover una base de datos mediante Separar y Adjuntar (Transact-SQL)Move a Database Using Detach and Attach (Transact-SQL)

En este tema se aplica a: SíSQL Servernobase de datos de SQL Azurenoalmacenamiento de datos de SQL Azure ningún Almacenamiento de datos paralelosTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

En este tema se describe cómo mover una base de datos separada a otra ubicación y volver a adjuntarla a la misma instancia de servidor o a otra en SQL Server 2017SQL Server 2017.This topic describes how to move a detached database to another location and re-attach it to the same or a different server instance in SQL Server 2017SQL Server 2017. No obstante, se recomienda mover las bases de datos mediante el procedimiento de reubicación programada ALTER DATABASE, en lugar usar las operaciones de separar y adjuntar.However, we recommend that you move databases by using the ALTER DATABASE planned relocation procedure, instead of using detach and attach. Para más información, consulte Move User Databases.For more information, see Move User Databases.

Importante

Se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza.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.

ProcedimientoProcedure

Para mover una base de datos mediante la operación de separar y adjuntarTo move a database by using detach and attach

  1. Separe la base de datos.Detach the database. Para obtener más información, vea Separar una base de datosFor more information, see Detach a Database.

  2. En el Explorador de Windows o en una ventana del símbolo del sistema de Windows, mueva el archivo o archivos de la base de datos separada y el archivo o archivos de registro a la nueva ubicación.In a Windows Explorer or Windows Command Prompt window, move the detached database file or files and log file or files to the new location.

    Nota

    Para mover una base de datos de un solo archivo, puede usar el correo electrónico si el tamaño del archivo es lo suficientemente pequeño para acomodar el correo electrónico.To move a single-file database, you can use email if the file size is small enough for email to accommodate.

    Debe mover los archivos de registro, incluso si piensa crear nuevos archivos de registro.You should move the log files even if you intend to create new log files. En algunos casos, para volver a adjuntar una base de datos son necesarios sus archivos de registro.In some cases, reattaching a database requires its existing log files. Por tanto, mantenga siempre todos los archivos de registro separados hasta que la base de datos se haya adjuntado correctamente sin ellos.Therefore, always keep all the detached log files until the database has been successfully attached without them.

    Nota

    Si intenta adjuntar la base de datos sin especificar el archivo de registro, la operación de adjuntar buscará el archivo de registro en su ubicación original.If you try to attach the database without specifying the log file, the attach operation will look for the log file in its original location. Si aún hay una copia del registro en la ubicación original, se adjunta esa copia.If a copy of the log still exists in the original location, that copy is attached. Para evitar que se utilice el archivo de registro original, especifique la ruta de acceso del nuevo archivo de registro o elimine la copia original del archivo de registro (después de copiarlo en la nueva ubicación).To avoid using the original log file, either specify the path of the new log file or remove the original copy of the log file (after copying it to the new location).

  3. Adjunte los archivos copiados.Attach the copied files. Para más información, consulte Attach a Database.For more information, see Attach a Database.

EjemploExample

En el siguiente ejemplo se crea una copia de la base de datos de AdventureWorks2012AdventureWorks2012 denominada MyAdventureWorks.The following example creates a copy of the AdventureWorks2012AdventureWorks2012 database named MyAdventureWorks. Las instrucciones Transact-SQLTransact-SQL se ejecutan en una ventana del Editor de consultas que esté conectada a la instancia del servidor a la que se ha adjuntado.The Transact-SQLTransact-SQL statements are executed in a Query Editor window that is connected to the server instance to which is attached.

  1. Separe la base de datos de AdventureWorks2012AdventureWorks2012 ejecutando las siguientes instrucciones Transact-SQLTransact-SQL :Detach the AdventureWorks2012AdventureWorks2012 database by executing the following Transact-SQLTransact-SQL statements:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'AdventureWorks2012';  
    GO  
    
  2. Mediante el método que elija, copie los archivos de la base de datos (AdventureWorks208R2_Data.mdf y AdventureWorks208R2_log) a: C:\MySQLServer\AdventureWorks208R2_Data.mdf y C:\MySQLServer\AdventureWorks208R2_Log.ldf, respectivamente.Using the method of your choice, copy the database files (AdventureWorks208R2_Data.mdf and AdventureWorks208R2_log) to: C:\MySQLServer\AdventureWorks208R2_Data.mdf and C:\MySQLServer\AdventureWorks208R2_Log.ldf, respectively.

    Importante

    En el caso de una base de datos de producción, coloque la base de datos y el registro de transacciones en discos independientes.For a production database, place the database and transaction log on separate disks.

    Para copiar archivos a través de la red en un disco de un equipo remoto, use el nombre UNC (Convención de nomenclatura universal) de la ubicación remota.To copy files over the network to a disk on a remote computer, use the universal naming convention (UNC) name of the remote location. Un nombre UNC toma la forma \\NombreDeServidor\NombreDeRecursoCompartido\RutaDeAcceso\NombreDeArchivo.A UNC name takes the form \\Servername\Sharename\Path\Filename. De la misma forma que al escribir archivos en el disco duro local, se debe conceder a la cuenta de usuario que usa la instancia de SQL ServerSQL Serverlos permisos necesarios para leer o escribir en archivos del disco remoto.As with writing files to the local hard disk, the appropriate permissions that are required to read or write to a file on the remote disk must be granted to the user account used by the instance of SQL ServerSQL Server.

  3. Adjunte la base de datos movida y, opcionalmente, su registro ejecutando las siguientes instrucciones Transact-SQLTransact-SQL .Attach the moved database and, optionally, its log by executing the following Transact-SQLTransact-SQL statements:

    USE master;  
    GO  
    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),  
        (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')  
        FOR ATTACH;  
    GO  
    

    En SQL Server Management StudioSQL Server Management Studio, una base de datos recién adjuntada no es inmediatamente visible en el Explorador de objetos.In SQL Server Management StudioSQL Server Management Studio, a newly attached database is not immediately visible in Object Explorer. Para ver la base de datos, en el Explorador de objetos, haga clic en Ver y, a continuación, en Actualizar.To view the database, in Object Explorer, click View, and then Refresh. Cuando se expande el nodo Bases de datos en el Explorador de objetos, la base de datos recién adjuntada aparecerá en la lista de bases de datos.When the Databases node is expanded in Object Explorer, the newly attached database now appears in the list of databases.

Ver tambiénSee Also

Adjuntar y separar bases de datos (SQL Server)Database Detach and Attach (SQL Server)