Procédure : appliquer une sauvegarde du journal des transactions (Transact-SQL)
Afin d'appliquer une sauvegarde du journal des transactions à une base de données, les conditions suivantes doivent être remplies :
Avant de créer la sauvegarde complète ou différentielle de base de données la plus récente, la base de données devait utiliser le mode de restauration complète ou le mode de récupération utilisant les journaux de transactions.
La séquence de restauration doit spécifier WITH NORECOVERY lors de la restauration de sauvegardes antérieures.
Les sauvegardes du journal doivent être appliquées dans l'ordre dans lequel elles ont été créées, sans rupture dans la séquence de journaux. Sauf pour la dernière sauvegarde du journal, vous devez utiliser WITH NORECOVERY, comme suit :
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
Lorsque vous appliquez la dernière sauvegarde de journal, vous avez le choix entre les tâches suivantes :
récupérer la base de données dans la dernière instruction BACKUP LOG :
RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GO
attendre de récupérer la base de données à l'aide d'une instruction séparée RESTORE DATABASE :
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GO
Attendre de récupérer la base de données vous permet de vérifier si vous avez restauré toutes les sauvegardes de journaux nécessaires. Cette méthode est souvent conseillée si vous effectuez une restauration limitée dans le temps.
Important
Nous vous recommandons de toujours préciser de façon claire WITH NORECOVERY ou WITH RECOVERY dans chaque instruction RESTORE pour éliminer toute ambiguïté. Cela est particulièrement important lors de l'écriture de scripts.
Pour appliquer une sauvegarde du journal des transactions
Exécutez l'instruction RESTORE LOG pour appliquer la sauvegarde du journal des transactions, en spécifiant :
le nom de la base de données à laquelle sera appliqué le journal des transactions ;
l'unité de sauvegarde à partir de laquelle sera restaurée la sauvegarde du journal des transactions ;
la clause NORECOVERY.
La syntaxe de base pour cette instruction est la suivante :
RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY.
Où database_name est le nom de la base de données et <backup_device>est le nom de l'unité contenant la sauvegarde du journal en cours de restauration.
Répétez l'étape 1 pour chaque sauvegarde du journal des transactions à appliquer.
Après avoir restauré la dernière sauvegarde de votre séquence de restauration, utilisez l'instruction ci-dessous pour récupérer la base données :
RESTORE database_name WITH RECOVERY
Important
Si vous créez une base de données miroir, omettez l'étape de récupération. Une base de données miroir doit rester dans l'état RESTORING.
Exemple
Par défaut, la base de données AdventureWorks utilise le mode de récupération simple. Les exemples suivants nécessitent la modification de la base de données pour utiliser le mode de restauration complète, comme suit :
ALTER DATABASE AdventureWorks SET RECOVERY FULL
A. Application d'une sauvegarde du journal des transactions uniques
Dans cet exemple, nous commençons par restaurer la base de données AdventureWorks à l'aide d'une sauvegarde complète de base de données qui réside sur une unité de sauvegarde nommée AdventureWorks_1. Nous appliquons ensuite la première sauvegarde du journal des transactions qui réside sur une unité de sauvegarde nommée AdventureWorks_log. Enfin, nous récupérons la base de données.
RESTORE DATABASE AdventureWorks
FROM AdventureWorks_1
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 1,
WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
WITH RECOVERY
GO
B. Application de plusieurs sauvegardes du journal des transactions
Dans cet exemple, nous commençons par restaurer la base de données AdventureWorks à l'aide d'une sauvegarde complète de base de données qui réside sur une unité de sauvegarde nommée AdventureWorks_1. Nous appliquons ensuite, successivement, les premières sauvegardes du journal des transactions qui résident sur une unité de sauvegarde nommée AdventureWorks_log. Enfin, nous récupérons la base de données.
RESTORE DATABASE AdventureWorks
FROM AdventureWorks_1
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 1,
NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 2,
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 3,
WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
WITH RECOVERY
GO
Voir aussi