Cómo configurar, mantener y poner en línea un servidor en estado de espera activa (Transact-SQL)

Por lo general, para configurar un servidor en espera es preciso crear una copia de seguridad completa y realizar de forma periódica copias de seguridad de registros de transacciones en el servidor principal; a continuación, deben aplicarse esas copias de seguridad, secuencialmente, en el servidor en espera. El servidor en espera se mantiene en estado de solo lectura entre las restauraciones. Cuando se necesita el servidor en espera, todas las copias de seguridad de registros de transacciones pendientes, incluida la copia de seguridad de registros de transacciones activo (que se encuentra en el servidor principal), se aplican al servidor en espera y se recupera la base de datos.

Para crear copias de seguridad en el servidor principal

  1. Ejecute la instrucción BACKUP DATABASE para crear la copia de seguridad completa.

  2. Ejecute la instrucción BACKUP LOG para crear una copia de seguridad de registros de transacciones.

  3. Repita el paso 2 para cada registro de transacciones que desee crear posteriormente.

Para configurar y mantener el servidor en espera

  1. Ejecute la instrucción RESTORE DATABASE con la cláusula NORECOVERY para restaurar la copia de seguridad completa creada en el paso 1 en el servidor principal.

  2. Ejecute la instrucción RESTORE LOG con la cláusula STANDBY para aplicar cada registro de transacciones creado en el paso 2 en el servidor principal. Especifique el nombre del archivo para deshacer en el que se encuentra el contenido de las páginas de datos previo a que se revirtieran las transacciones sin confirmar que afectaban a esas páginas.

    Nota

    Para obtener un mayor rendimiento, utilice WITH NORECOVERY cuando aplique varios registros. En ocasiones, un archivo en espera solamente se necesita como una copia de conmutación por error de solo lectura de modo que pueda usarse si la entidad de seguridad se pone en modo sin conexión.

  3. Repita el paso 2 para cada registro de transacciones creado en el servidor principal.

Para poner en línea el servidor en espera (por un error del servidor principal)

  1. Si es posible, realice una copia de seguridad de registros de transacciones activo (el final del registro). Para crear una copia del final del registro cuando la base de datos no se puede iniciar normalmente, ejecute la instrucción BACKUP LOG en la base de datos principal mediante WITH NO_TRUNCATE. Ésta es la última copia de seguridad de registros de transacciones que se aplica al servidor en espera cuando éste se ponga en línea. Para obtener más información, vea Cómo crear una copia de seguridad del registro de transacciones (Transact-SQL).

  2. Ejecute la instrucción RESTORE LOG con la cláusula STANDBY para aplicar todas las copias de seguridad de registros de transacciones (incluida la copia de seguridad de registros de transacciones activo creada en el paso 1) que aún no se hayan aplicado al servidor en espera.

    Nota

    Para obtener un mayor rendimiento, utilice WITH NORECOVERY cuando aplique varios registros. Para saber cuándo se debe utilizar WITH STANDBY y cuándo WITH NORECOVERY, vea el siguiente ejemplo.

  3. Ejecute la instrucción RESTORE DATABASE WITH RECOVERY para recuperar la base de datos y conectar el servidor en espera.

Ejemplo

En este ejemplo se configura la base de datos MyAdvWorks en un servidor en espera. Esta base de datos se puede utilizar en modo de solo lectura entre operaciones de restauración.

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO