Procédure : configurer, maintenir et mettre en ligne un serveur de secours actif (Transact-SQL)

La configuration d'un serveur de secours implique en général la création de sauvegardes périodiques complètes ou du journal des transactions sur le serveur principal, puis l'application dans l'ordre de ces sauvegardes au serveur de secours. Le serveur de secours demeure en lecture seule entre les différentes restaurations. Lorsqu'il convient de le rendre disponible à l'utilisation, toutes les sauvegardes du journal des transactions en attente, y compris la sauvegarde du journal des transactions actif en cours, sont appliquées à partir du serveur principal au serveur de secours et la base de données est récupérée.

Pour créer des sauvegardes sur le serveur principal

  1. Exécutez l’instruction BACKUP DATABASE pour créer la sauvegarde complète.

  2. Exécutez l'instruction BACKUP LOG pour créer une sauvegarde du journal des transactions.

  3. Répétez l'étape 2 pour chaque journal des transactions à créer dans le temps.

Pour configurer et maintenir le serveur de secours

  1. Exécutez l’instruction RESTORE DATABASE avec la clause NORECOVERY pour restaurer la sauvegarde complète créée sur le serveur principal à l’étape 1.

  2. Exécutez l'instruction RESTORE LOG avec la clause STANDBY pour appliquer chaque journal des transactions créé à l'étape 2 sur le serveur principal. Spécifiez le nom du fichier d'annulation qui comprend le contenu des pages de données avant que des transactions non validées affectant ces pages ne soient annulées.

    [!REMARQUE]

    Pour améliorer les performances, lors de l'application de plusieurs journaux, vous devez utiliser l'option WITH NORECOVERY. Parfois, un fichier d'annulation est indispensable uniquement comme copie de basculement en lecture seule à utiliser si le fichier principal est hors connexion.

  3. Répétez l'étape 2 pour chaque journal des transactions créé sur le serveur principal.

Pour mettre en ligne le serveur de secours (panne du serveur principal)

  1. Dans la mesure du possible, sauvegardez le journal des transactions actif (la fin du journal). Pour créer une sauvegarde de fin de journal lorsque la base de données ne démarre pas correctement, exécutez l'instruction BACKUP LOG à l'aide de WITH NO_TRUNCATE sur la base de données primaire. La dernière sauvegarde du journal des transactions est appliquée au serveur de secours lorsque celui-ci est mis en ligne. Pour plus d'informations, consultez Procédure : Création d'une sauvegarde du journal des transactions (Transact-SQL).

  2. Exécutez l'instruction RESTORE LOG en spécifiant la clause STANDBY pour appliquer toutes les sauvegardes de journal des transactions, y compris celle du journal des transactions actif créée à l'étape 1, qui n'ont pas encore été appliquées au serveur de secours.

    [!REMARQUE]

    Pour améliorer les performances, lors de l'application de plusieurs journaux, vous devez utiliser l'option WITH NORECOVERY. Pour un exemple de cas d'utilisation des options WITH STANDBY et WITH NORECOVERY, consultez la section ci-dessous.

  3. Exécutez l'instruction RESTORE DATABASE WITH RECOVERY pour récupérer la base de données et rappeler le serveur de secours.

Exemple

Cet exemple configure la base de données MyAdvWorks sur un serveur de secours. Elle peut être utilisée en lecture seule entre deux opérations de restauration.

-- 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