Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL)

La base de datos reflejada debe existir antes de poder iniciarse una sesión de creación de reflejo de la base de datos. La base de datos reflejada debe tener el mismo nombre que la base de datos de la entidad de seguridad. El propietario de la base de datos o el administrador del sistema puede crear la base de datos reflejada a partir de una copia de seguridad completa reciente de la base de datos de la entidad de seguridad y, al menos, una copia de seguridad subsiguiente del registro. Para que la creación de reflejo funcione, la base de datos reflejada debe permanecer en estado RESTORING. Por lo tanto, al restaurar una copia de seguridad para una base de datos reflejada, se debe utilizar siempre WITH NORECOVERY en cada operación de restauración.

Si la creación de reflejo se ha eliminado y la base de datos reflejada sigue en el estado de recuperación (RECOVERING), se puede reiniciar la creación de reflejo. No obstante, en primer lugar se debe realizar al menos una copia de seguridad de registros de la base de datos de la entidad de seguridad. A continuación, en la base de datos reflejada, debe restaurar WITH NORECOVERY todas las copias de seguridad de registros que se realizaron en la base de datos de la entidad de seguridad desde que se eliminó la creación de reflejo.

[!NOTA]

No puede reflejar las bases de datos del sistema master, msdb, temp o model.

Procedimiento

Para crear una base de datos para la creación de reflejo de la base de datos

  1. Asegúrese de que las instancias de servidor de la entidad de seguridad y de servidor reflejado tienen instalado MicrosoftSQL Server 2008.

  2. Asegúrese de que la base de datos utiliza el modelo de recuperación completa.

    Para obtener más información, vea Cómo ver o cambiar el modelo de recuperación de una base de datos (SQL Server Management Studio) o sys.databases (Transact-SQL) y ALTER DATABASE (Transact-SQL).

  3. Realice una copia de seguridad completa de la base de datos de la entidad de seguridad.

    Para obtener más información, vea Cómo realizar una copia de seguridad de una base de datos (SQL Server Management Studio) o Cómo crear una copia de seguridad de la base de datos completa (Transact-SQL).

    [!NOTA]

    También puede restaurar una copia de seguridad completa existente de una base de datos y, opcionalmente, una copia de seguridad diferencial de base de datos; después, debe restaurar todas las copias de seguridad de registros subsiguientes.

  4. Asegúrese de que el sistema en donde piensa crear la base de datos reflejada posee una unidad de disco con espacio suficiente para alojar la base de datos.

  5. A menos que la copia de seguridad se encuentre en una unidad de red a la que se pueda tener acceso desde ambos sistemas, copie la copia de seguridad de la base de datos en dicho sistema.

  6. Para crear la base de datos reflejada, restaure la copia de seguridad completa de la base de datos en la instancia de servidor reflejado. La instrucción RESTORE DATABASE database_name debe especificar WITH NORECOVERY, donde database_name es el nombre de la base de datos cuyo reflejo se va a crear.

    [!NOTA]

    Si restaura la base de datos grupo de archivos por grupo de archivos, asegúrese de restaurar la base de datos completa.

    Además, se recomienda que, si es posible, la ruta de acceso (incluida la letra de unidad) de la base de datos reflejada sea idéntica a la de la base de datos de la entidad de seguridad.

    Si los diseños de archivo deben ser diferentes (por ejemplo, si la base de datos de la entidad de seguridad se encuentra en la unidad "F:" pero el sistema del servidor reflejado no tiene unidad F:), se debe incluir la opción MOVE en la instrucción RESTORE.

    Nota importanteImportante

    Para poder agregar un archivo durante una sesión de creación de reflejo sin influir en la sesión, la ruta de acceso del archivo debe existir en ambos servidores. Por consiguiente, si mueve los archivos de base de datos al crear la base de datos de reflejo, se podría producir un error en una operación posterior para agregar un archivo en la base de datos de reflejo y provocar la suspensión de la creación del reflejo. Para obtener información sobre cómo actuar si una operación de creación de archivo no ha podido realizarse, vea Solucionar problemas de la implementación de la creación de reflejo de la base de datos.

    Para obtener más información, vea RESTORE (Transact-SQL) y RESTORE (argumentos, Transact-SQL).

  7. Normalmente, se debe hacer, por lo menos, una copia de seguridad de registros de la base de datos de la entidad de seguridad, copiarla en el servidor reflejado y restaurarla en la base de datos reflejada (mediante WITH NORECOVERY). Sin embargo, puede que no se necesite una copia de seguridad de registros si la base de datos se ha creado recientemente y no se ha hecho todavía ninguna copia de seguridad de registros o si el modelo de recuperación ha cambiado recientemente de SIMPLE a FULL.

    Para aplicar la copia de seguridad de registros a la base de datos reflejada, puede utilizar SQL Server o Transact-SQL en el servidor reflejado:

  8. Si se han realizado copias de seguridad de registros de la base de datos de la entidad de seguridad desde que se realizó la copia de seguridad de registros obligatoria, deben copiarse también en el servidor reflejado y aplicar cada una de ellas a la base de datos reflejada, empezando con la más antigua y utilizando siempre WITH NORECOVERY.

Nota de seguridadNota de seguridad

TRUSTWORTHY se establece en OFF cuando se hace una copia de seguridad de base de datos. Por lo tanto, TRUSTWORTHY está siempre en OFF en una nueva base de datos reflejada. Si es preciso que la base de datos sea de confianza después de una conmutación por error, son necesarios pasos de configuración adicionales. Para obtener más información, vea Cómo configurar una base de datos reflejada para usar la propiedad Trustworthy.

Nota importanteImportante

Si la creación de reflejo de la base de datos se detiene, todas las copias de seguridad de registros subsiguientes que se realicen en la base de datos de la entidad de seguridad deben aplicarse a la base de datos reflejada para poder reiniciar la creación de reflejo.

Ejemplo

Para poder iniciar una sesión de creación de reflejo de la base de datos, debe crear la base de datos reflejada. Debe hacerlo inmediatamente antes de iniciar la sesión de creación de reflejo.

En este ejemplo se utiliza la base de datos de ejemplo AdventureWorks, que usa de forma predeterminada un modelo de recuperación simple.

  1. Para utilizar la creación de reflejo de la base de datos con la base de datos AdventureWorks, modifíquela para que utilice el modelo de recuperación completa.

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
    SET RECOVERY FULL;
    GO
    
  2. Después de modificar el modelo de recuperación de la base de datos de SIMPLE a FULL, cree una copia de seguridad completa, que puede usarse para crear la base de datos reflejada. Puesto que se ha cambiado recientemente el modelo de recuperación, se especifica la opción WITH FORMAT para crear un conjunto de medios. Esto es útil para separar las copias de seguridad con el modelo de recuperación completa a partir de cualquier copia de seguridad anterior realizada con el modelo de recuperación simple. Para este ejemplo, el archivo de copia de seguridad (C:\AdventureWorks.bak) se crea en la misma unidad que la base de datos.

    [!NOTA]

    Para una base de datos de producción, siempre se debe realizar la copia de seguridad en un dispositivo independiente.

    En la instancia de servidor de la entidad de seguridad (en PARTNERHOST1), cree una copia de seguridad completa de la base de datos de la entidad de seguridad, como se indica a continuación:

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
        WITH FORMAT
    GO
    
  3. Copie la copia de seguridad completa en el servidor reflejado.

  4. Restaure la copia de seguridad completa con la opción WITH NORECOVERY en la instancia de servidor reflejado. El comando de restauración depende de si las rutas de acceso de las bases de datos de la entidad de seguridad y reflejada son idénticas.

    • Si las rutas de acceso son idénticas:

      En la instancia de servidor reflejado (en PARTNERHOST5), restaure la copia de seguridad completa como se indica a continuación:

      RESTORE DATABASE AdventureWorks 
          FROM DISK = 'C:\AdventureWorks.bak' 
          WITH NORECOVERY
      GO
      
    • Si las rutas de acceso son distintas:

      Si la ruta de acceso de la base de datos reflejada difiere de la de la base de datos de la entidad de seguridad (por ejemplo, letras de unidad diferentes), la creación de la base de datos reflejada requiere que la operación de restauración incluya una cláusula MOVE.

      Nota importanteImportante

      Si los nombres de las rutas de acceso de las bases de datos de la entidad de seguridad y reflejada son distintos, no se puede agregar ningún archivo. Esto es debido a que al recibir el registro para la operación de agregar un archivo, la instancia de servidor reflejado intenta colocar el nuevo archivo en la ubicación utilizada por la base de datos de la entidad de seguridad.

      Por ejemplo, el siguiente comando restaura una copia de seguridad de una base de datos de la entidad de seguridad que reside en C:\Archivos de programa\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ en una ubicación distinta, D:\Archivos de programa\Microsoft SQL Server\MSSQL.n\MSSQL\Data\, donde va a residir la base de datos reflejada.

      RESTORE DATABASE AdventureWorks
         FROM DISK='C:\AdventureWorks.bak'
         WITH NORECOVERY, 
            MOVE 'AdventureWorks_Data' TO 
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', 
            MOVE 'AdventureWorks_Log' TO
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf';
      GO
      
  5. Una vez creada la copia de seguridad completa, debe crearse una copia de seguridad de registros en la base de datos de la entidad de seguridad. Por ejemplo, la siguiente instrucción Transact-SQL realiza una copia de seguridad del registro en el mismo archivo que se utilizó en la anterior copia de seguridad completa:

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
    GO
    
  6. Para poder iniciar la creación de reflejo, se debe aplicar la copia de seguridad de registros obligatoria (y las copias de seguridad de registros subsiguientes).

    Por ejemplo, la siguiente instrucción Transact-SQL restaura el primer registro de C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Si se realizan copias de seguridad de registros adicionales antes de iniciar la creación de reflejo, se deben restaurar todas las copias de seguridad de registros, por orden, en el servidor reflejado mediante WITH NORECOVERY.

    Por ejemplo, la siguiente instrucción Transact-SQL restaura dos registros adicionales de C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=2, NORECOVERY
    GO
    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\AdventureWorks.bak' 
        WITH FILE=3, NORECOVERY
    GO
    

Para ver un ejemplo completo de la configuración de la creación de reflejo de la base de datos, en el que se muestra la configuración de seguridad, se prepara la base de datos reflejada, se configuran los asociados y se agrega un token, vea Configurar la creación de reflejo de la base de datos.