Cómo actualizar una base de datos mediante Separar y Adjuntar (Transact-SQL)

Actualizado: 5 de diciembre de 2005
ms189625.security(es-es,SQL.90).gifNota de seguridad:
Se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza. Es posible que dichas bases de datos contengan código dañino que podría ejecutar código Transact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física. Para utilizar una base de datos procedente de 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.

En SQL Server 2005, puede utilizar el método de separar y adjuntar para actualizar una base de datos de usuario de SQL Server versión 7.0 o SQL Server 2000. Sin embargo, se aplican las siguientes restricciones:

  • Las copias de seguridad de las bases de datos master, model o msdb creadas mediante SQL Server 7.0 o SQL Server 2000 no pueden adjuntarse en SQL Server 2005.
  • Los archivos de registro de SQL Server 7.0 que contienen operaciones de creación de índices no pueden adjuntarse en SQL Server 2000 o SQL Server 2005.
ms189625.note(es-es,SQL.90).gifImportante:
Las copias de seguridad de bases de datos creadas mediante SQL Server 6.5 o anterior tienen un formato incompatible y no se pueden adjuntar en SQL Server 2005.

  • Cuando adjunte una base de datos replicada que fue copiada en lugar de separada:
    • Si se adjunta la base de datos a una versión actualizada de la misma instancia de servidor, es necesario ejecutar sp_vupgrade_replication para actualizar la réplica una vez finalizada la operación de adjuntar. Para obtener más información, vea sp_vupgrade_replication (Transact-SQL).
    • Si adjunta la base de datos a una instancia de servidor diferente, sin que importe la versión, debe ejecutar sp_removedbreplication para quitar la réplica una vez completada la operación de adjuntar. Para obtener más información, vea sp_removedbreplication (Transact-SQL).

Cuando se utilizan las palabras clave APPLY, PIVOT, TABLESAMPLE o UNPIVOT en bases de datos actualizadas a SQL Server 2005, el nivel de compatibilidad de la base de datos debe estar establecido en 90. Para establecer el nivel de compatibilidad de las bases de datos, vea sp_dbcmptlevel (Transact-SQL).

ms189625.note(es-es,SQL.90).gifImportante:
   En el Service Pack 3 (SP3) de SQL Server 2000 y versiones posteriores de SQL Server, las operaciones de adjuntar y separar deshabilitan el encadenamiento de propiedad entre bases de datos para la base de datos mediante el establecimiento de su opción cross db ownership chaining en 0. Para obtener información sobre cómo habilitar el encadenamiento, vea cross db ownership chaining (opción).

Para actualizar una base de datos mediante las operaciones de separar y adjuntar
  1. Separe la base de datos de la instancia de SQL Server 7.0 o SQL Server 2000 mediante el procedimiento almacenado sp_detach_db.

    Para obtener más información, vea los Libros en pantalla de SQL Server de esa versión de SQL Server.

    ms189625.note(es-es,SQL.90).gifNota:
    En SQL Server 2005, este procedimiento almacenado tiene opciones nuevas. Para obtener más información, vea sp_detach_db (Transact-SQL).

  2. También puede mover los archivos de la base de datos separada y los archivos de registro.

    Debe mover los archivos de registro, junto con los archivos de datos, incluso aunque piense crear archivos de registro. En algunos casos, para volver a adjuntar una base de datos son necesarios sus archivos de registro. Por tanto, mantenga siempre todos los archivos de registro separados hasta que la base de datos se haya adjuntado correctamente sin ellos.

    ms189625.note(es-es,SQL.90).gifNota:
    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. Si la copia original del registro todavía está en esa ubicación, se adjuntará esa copia. 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).

  3. Adjunte los archivos copiados a la instancia de servidor SQL Server 2005, mediante la instrucción CREATE DATABASE con la opción FOR ATTACH o FOR ATTACH_REBUILD_LOG.

    ms189625.note(es-es,SQL.90).gifNota:
    Para obtener información acerca de cómo adjuntar una base de datos de SQL Server 2005 mediante el Explorador de objetos, vea Cómo adjuntar una base de datos (SQL Server Management Studio).

  4. Se recomienda ejecutar DBCC UPDATEUSAGE en la base de datos actualizada.

    En versiones anteriores de SQL Server, los valores del recuento de filas por tabla y por índice y del recuento de páginas pueden llegar a ser incorrectos. Por lo tanto, las bases de datos que se crearon en versiones anteriores a SQL Server 2005 pueden contener recuentos incorrectos. Después de actualizar una base de datos a SQL Server 2005, se recomienda ejecutar DBCC UPDATEUSAGE para corregir los recuentos no válidos. Esta instrucción de DBCC corrige los recuentos de las filas, las páginas utilizadas, las páginas reservadas, las páginas hoja y las páginas de datos de una tabla o un índice. Para obtener más información, vea DBCC UPDATEUSAGE (Transact-SQL).

  5. Si realiza una copia de la base de datos (en lugar de moverla), también puede volver a adjuntar la base de datos original de la instancia de SQL Server 7.0 o SQL Server 2000 mediante los procedimientos almacenados sp_attach_db o sp_attach_single_file_db.

    Para obtener más información, vea los Libros en pantalla de SQL Server de esa versión de SQL Server.

Al adjuntar una base de datos a otra instancia de servidor, para que los usuarios y las aplicaciones puedan utilizarla de igual manera, puede que tenga que volver a crear algunos o todos los metadatos de la base de datos, como los inicios de sesión, los trabajos y los permisos, en la otra instancia de servidor. Para obtener más información, vea Administrar los metadatos cuando una base de datos pasa a estar disponible en otra instancia de servidor.

En el siguiente ejemplo se actualiza la base de datos pubs de SQL Server 2000 a una base de datos de SQL Server 2005 mediante instrucciones Transact-SQL para separar y adjuntar la base de datos.

  1. Conecte el Analizador de consultas SQL Server 2000 a una instancia de servidor que tenga adjuntada pubs y separe la base de datos mediante el procedimiento almacenado sp_detach_db.
    USE master;
    GO
    EXEC sp_detach_db @dbname = N'pubs';
    GO
    
  2. En este ejemplo, utilizando el método que desee, copie los archivos de pubs (pubs.mdf y pubs_log.ldf) de C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\ (ubicación predeterminada de pubs en SQL Server 2000) a C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ (directorio de datos de SQL Server 2005).
    ms189625.note(es-es,SQL.90).gifImportante:
    En el caso de una base de datos de producción, coloque la base de datos y el registro de transacciones en discos independientes.

    ms189625.note(es-es,SQL.90).gifNota:
    Para copiar archivos a través de la red en un disco de un equipo remoto, utilice el nombre UNC (Convención de nomenclatura universal) de la ubicación remota. Un nombre UNC toma la forma \\nombreDeServidor\nombreDeRecursoCompartido\rutaDeAcceso\nombreDeArchivo. Al igual que con la escritura de archivos en un disco duro local, la cuenta de usuario que utiliza SQL Server debe tener los permisos necesarios para leer o escribir en el archivo del disco remoto.

  3. Adjunte la base de datos pubs copiada y, si lo desea, los archivos de registro a una instancia de SQL Server 2005 (en este ejemplo se utiliza el mismo nombre de base de datos). En SQL Server Management Studio, abra una nueva consulta del Editor de consultas y conéctese a la instancia de servidor en la que desee adjuntar la base de datos.
    ms189625.note(es-es,SQL.90).gifNota:
    Para obtener más información, vea Consulta Transact-SQL de SQL Server Management Studio.

    Ejecute la siguiente instrucción CREATE DATABASE.
    USE master;
    GO
    CREATE DATABASE pubs ON PRIMARY 
       (FILENAME = 
          'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\pubs.mdf')
       LOG ON (FILENAME = 
          'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\pubs_log.ldf')
       FOR ATTACH;
    GO
    
    ms189625.note(es-es,SQL.90).gifNota:
    En SQL Server Management Studio, una base de datos recién adjuntada no es inmediatamente visible en el Explorador de objetos. Para ver la base de datos, haga clic en la ventana del Explorador de objetos y seleccione Ver > Actualizar. Cuando se expande el nodo Bases de datos, la base de datos recién adjuntada aparecerá en la lista de bases de datos.

  4. Si lo desea, puede volver a adjuntar la base de datos pubs original a la instancia de SQL Server 2000 mediante el procedimiento almacenado sp_attach_db. En el Analizador de consultas, escriba:
    USE master;
    Go
    EXEC sp_attach_db @dbname = N'pubs', 
       @filename1 = 
          N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
       @filename2 = 
          N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf';
    GO
    

Adiciones de comunidad

AGREGAR
Mostrar: