Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Vous pouvez restaurer une sauvegarde du journal de transaction dans SQL Server en utilisant SQL Server Management Studio, Transact-SQL ou PowerShell.
Prérequis
Vous devez restaurer les sauvegardes dans l’ordre dans lequel vous les avez créées. Avant de restaurer une sauvegarde spécifique du journal de transaction, restaurez les sauvegardes précédentes suivantes sans annuler les transactions non validées, en utilisant WITH NORECOVERY:
La sauvegarde complète de la base de données et, en option, la dernière sauvegarde différentielle effectuée avant cette sauvegarde du journal de transaction. La base de données doit avoir utilisé le mode de récupération complète ou utilisant les journaux de transactions avant la création de la sauvegarde complète ou différentielle la plus récente.
Toutes les sauvegardes du journal des transactions effectuées après la sauvegarde complète de la base de données ou la sauvegarde différentielle (si vous la restaurez), mais avant cette sauvegarde du journal des transactions. Vous devez appliquer les sauvegardes de journaux dans l’ordre où vous les avez créées, sans aucune interruption dans la chaîne de log.
Pour plus d’informations sur les sauvegardes des journaux de transaction, voir Sauvegardes des journaux de transactions et Appliquer les sauvegardes des journaux de transaction.
autorisations
Pour une base de données existante, RESTORE les permissions sont attribuées par défaut aux membres des rôles serveur fixes sysadmin et dbcreator ainsi qu’au propriétaire (dbo) de la base de données.
RESTORE Les permissions vont aux rôles dont le serveur peut toujours vérifier l’appartenance. Le serveur peut vérifier l’appartenance au rôle fixe de la base de données que lorsque la base est accessible et intacte, ce qui n’est pas toujours vrai lors de l’exécution de RESTORE. Pour cette raison, les membres du rôle db_owner de base de données fixe n’ont RESTORE pas de permissions.
Remarks
Pour une base de données miroir, ou une base de données secondaire de groupe de disponibilité que vous n'avez pas jointe au groupe de disponibilité, restaurez la dernière sauvegarde du journal avec l'option NORECOVERY (-NoRecovery dans PowerShell). La base de données doit rester à l’état RESTORING.
Pour une base de données secondaire d'expédition des journaux de transaction, restaurez la dernière sauvegarde des journaux avec l'option NORECOVERY ou l'option STANDBY (-StandbyFile dans PowerShell). Cette STANDBY option donne un accès en lecture seule à la base de données entre les restaurations.
Utilisez SQL Server Management Studio.
Avertissement
Dans une restauration classique, vous sélectionnez les sauvegardes de journaux avec les sauvegardes de données et différentielles dans la boîte de dialogue Restaurer la base de données .
Connectez-vous à l’instance appropriée du Moteur de base de données SQL Server. Dans Explorateur d'objets, sélectionnez le nom du serveur pour développer l’arborescence du serveur.
Développez les bases de données. Sélectionnez une base de données utilisateur, ou développez Bases de données système et sélectionnez une base de données système.
Faites un clic droit sur la base de données, pointez vers Tâches, pointez vers Restaurer, puis sélectionnez Journal des transactions. La boîte de dialogue Restaurer le journal des transactions s’ouvre.
Remarque
Si le journal des transactions n’est pas disponible, il se peut que vous deviez d’abord restaurer une sauvegarde complète ou différentielle. Utilisez la boîte de dialogue Restaurer la base de données .
Sur la page Général , dans la boîte de liste Base de données , sélectionnez la base de données. La liste ne montre que les bases de données en état de restauration.
Pour spécifier la source et l’emplacement des ensembles de sauvegarde à restaurer, sélectionnez l’une des options suivantes :
À partir de sauvegardes précédentes de la base de données
Sélectionnez la base de données à restaurer dans la liste déroulante. La liste ne contient que des bases de données dont les sauvegardes sont enregistrées dans l’historique de sauvegarde de msdb.
À partir d'un fichier ou d'une bande
Sélectionnez le bouton Parcourir (...) pour ouvrir la boîte de dialogue Sélectionner les unités de sauvegarde. Dans la zone Type de support de sauvegarde, sélectionnez un type de périphérique. Pour ajouter un ou plusieurs appareils à la zone Supports de sauvegarde, sélectionnez Ajouter.
Après avoir ajouté les appareils que vous souhaitez, sélectionnez OK pour revenir à la page Générale .
Dans la grille Sélectionner les sauvegardes du journal des transactions à restaurer , sélectionnez les sauvegardes à restaurer. La grille liste les sauvegardes des journaux de transactions disponibles pour la base de données sélectionnée. Le tableau liste les sauvegardes du journal dans l’ordre des numéros de séquence du journal (LSN) qu’elles contiennent, et vous devez les restaurer dans cet ordre.
Le tableau suivant répertorie les en-têtes de colonnes de la grille et décrit leur valeur.
En-tête Valeur Restaurer Des cases à cocher sélectionnées indiquent les ensembles de sauvegarde à restaurer. Nom Nom de l’ensemble de sauvegarde. Composant Composant sauvegardé : Base de données, Fichier ou <vide> (pour les journaux des transactions). Base de données Nom de la base de données impliquée dans la sauvegarde. Date de début Date et heure de début de la sauvegarde, d'après les paramètres régionaux du client. Date de fin Date et heure de fin de la sauvegarde, d'après les paramètres régionaux du client. Premier LSN Numéro séquentiel dans le journal correspondant à la première transaction dans le jeu de sauvegarde. Vide pour les sauvegardes de fichiers. Dernier LSN Numéro séquentiel dans le journal correspondant à la dernière transaction dans le jeu de sauvegarde. Vide pour les sauvegardes de fichiers. NSE du point de contrôle Numéro séquentiel dans le journal correspondant au point de contrôle le plus récent au moment où la sauvegarde a été créée. LSN complet Numéro séquentiel dans le journal correspondant à la sauvegarde complète la plus récente de la base de données. Serveur Nom de l'instance du moteur de base de données qui a effectué l'opération de sauvegarde. Nom d’utilisateur Nom de l'utilisateur qui a effectué la restauration. Taille Taille du jeu de sauvegarde en octets. Position Position du jeu de sauvegarde dans le volume Expiration Date et heure d'expiration du jeu de sauvegardes. Sélectionnez l’une des options suivantes :
Limite dans le temps
Conservez la valeur par défaut (Le plus récent possible), ou sélectionnez le bouton de navigation pour ouvrir la boîte de dialogue Limite de restauration dans le temps et sélectionner une date et une heure spécifiques.
Transaction marquée
Restaurez la base de données vers une transaction précédemment marquée. Cette option ouvre la boîte de dialogue Sélectionner une transaction marquée . La grille dans cette boîte de dialogue liste les transactions marquées dans les sauvegardes du journal de transactions sélectionnées.
Par défaut, l’opération de restauration va jusqu’à, mais exclut, la transaction marquée. Pour inclure la transaction marquée dans la restauration, sélectionnez Inclure la transaction marquée.
Le tableau suivant répertorie les en-têtes de colonnes de la grille et décrit leur valeur.
En-tête Valeur <vide> Affiche une case à cocher permettant de sélectionner le repère. Marque de transaction Nom de la transaction marquée spécifiée par l'utilisateur lors de la validation de la transaction. Date Date et heure de la validation de la transaction. La date et l’heure de la transaction sont affichées telles qu’enregistrées dans la table logmarkhistory de MSDB, et non selon la date et l’heure de l’ordinateur client. Description Description de la transaction marquée, le cas échéant, spécifiée par l’utilisateur lors de la validation de la transaction. LSN Numéro de séquence du journal de la transaction marquée. Base de données Nom de la base de données où la transaction marquée a été validée. Nom d’utilisateur Nom de l'utilisateur de la base de données qui a validé la transaction marquée.
Pour afficher ou sélectionner les options avancées, sélectionnez Options dans le volet Sélectionner une page.
Dans la section Options de restauration , sélectionnez parmi les options suivantes :
Conserver les paramètres de la réplication (WITH KEEP_REPLICATION)
Préserve les paramètres de réplication lorsque vous restaurez une base de données publiée sur un serveur différent de celui sur lequel la base de données a été créée.
Cette option n’est disponible qu’avec l’option Laisser la base de données prête à être utilisée en annulant les transactions non engagées... (décrite plus loin), ce qui équivaut à restaurer une sauvegarde avec l’option RECOVERY .
Sélectionner cette option équivaut à utiliser l’option KEEP_REPLICATION dans une instruction Transact-SQL RESTORE .
Demander confirmation avant chaque restauration de sauvegarde
Avant de restaurer chaque jeu de sauvegarde après la première, cette option affiche la boîte de dialogue Continuer la restauration qui vous invite à préciser si vous voulez continuer la séquence de restauration. La boîte de dialogue affiche le nom du jeu média suivant (si disponible), le nom de l’ensemble de sauvegarde et la description de l’ensemble de sauvegarde.
Cette option est particulièrement utile lorsque vous devez échanger des bandes pour différents ensembles de supports, par exemple lorsque le serveur ne possède qu’un seul périphérique de bande. Sélectionnez OK uniquement lorsque vous êtes prêt à continuer.
Si vous sélectionnez Non, la base de données reste en état de restauration. Vous pouvez continuer la séquence de restauration plus tard, à partir de la dernière restauration qui a été terminée. Si la sauvegarde suivante est une sauvegarde de données ou différentielle, utilisez à nouveau la tâche Restaurer la base de données . S'il s'agit d'une sauvegarde de journal, utilisez la tâche Restaurer le journal des transactions .
Restreindre l'accès à la base de données restaurée (WITH RESTRICTED_USER)
Limite l’accès à la base de données restaurée aux membres de db_owner, dbcreatorou sysadmin.
Sélectionner cette option équivaut à utiliser l’option RESTRICTED_USER dans une instruction Transact-SQL RESTORE .
Dans l’état de récupération, spécifiez l’état de la base de données après l’opération de restauration.
Laisser la base de données prête à l’emploi en annulant les transactions non validées. Les journaux de transactions supplémentaires ne peuvent pas être restaurés. (RESTORE AVEC RÉCUPÉRATION)
Récupère la base de données. Cette option est équivalente à l’option RECOVERY dans une déclaration Transact-SQL RESTORE .
Choisissez cette option uniquement si vous n’avez pas d’autres sauvegardes de journaux à restaurer.
Laissez la base de données non opérationnelle, et n’annulez pas les transactions non validées. Des journaux de transactions supplémentaires peuvent être restaurés. (RESTORE AVEC NORECOVERY)
Laisse la base de données non récupérée dans l'état RESTORING . Cette option équivaut à l’utilisation de l’option NORECOVERY dans une instruction Transact-SQL RESTORE .
Lorsque vous choisissez cette option, l’option Préserver les paramètres de réplication n’est pas disponible.
Laisser la base de données en lecture seule. Annulez les transactions non validées, mais enregistrez les actions d'annulation dans un fichier d'annulation afin de rendre réversibles les effets de la récupération. (RESTORE WITH STANDBY)
Laisse la base de données dans un état de secours. Cette option équivaut à l’utilisation de l’option STANDBY dans une instruction Transact-SQL RESTORE.
Cette option nécessite un fichier d'annulation.
Si vous laissez la base de données en mode lecture seule, spécifiez un nom de fichier de veille dans la zone de texte Fichier de veille. Vous pouvez chercher le fichier de secours ou taper son chemin dans la boîte de texte.
Utiliser Transact-SQL
Important
Pour éviter toute ambiguïté, spécifiez explicitement soit WITH NORECOVERY, soit WITH RECOVERY dans chaque instruction RESTORE, surtout dans les scripts.
Pour chaque sauvegarde du journal de transaction avant la dernière de votre séquence de restauration, exécutez une
RESTORE LOGinstruction avec les valeurs suivantes :- Le nom de la base de données à laquelle appliquer le journal de transaction.
- Le périphérique de sauvegarde qui contient la sauvegarde du journal des transactions.
- La clause
NORECOVERY.
L’exemple suivant montre la syntaxe de base, où
<database_name>est le nom de la base de données et<backup_device>celui du périphérique contenant la sauvegarde du journal des transactions.RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY [ ; ]Si votre séquence de restauration n’a qu’une seule sauvegarde de journal, passez cette étape.
Pour la dernière sauvegarde de journal dans votre séquence de restauration, utilisez l’une des méthodes suivantes pour récupérer la base de données :
Restaurez la base de données dans le cadre de la dernière instruction
RESTORE LOG:RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GORestaurez la base de données plus tard, avec une instruction séparée
RESTORE DATABASE:RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GOLa base de données reste en état de restauration après la dernière
RESTORE LOGinstruction. Vous pouvez vérifier que vous avez restauré toutes les sauvegardes de journaux nécessaires, puis restaurer la base de données. Cette approche est souvent utile pour une restauration à un moment donné.
Exemples (Transact-SQL)
Par défaut, la base de données AdventureWorks2025 utilise le mode de récupération simple. Les exemples suivants nécessitent des sauvegardes effectuées selon le modèle de récupération complet. Avant de créer ces sauvegardes, exécutez l’instruction suivante pour modifier le modèle de récupération :
ALTER DATABASE AdventureWorks2025
SET RECOVERY FULL;
Le passage au modèle de récupération complet ne prend effet qu’après la première sauvegarde des données. Faites une sauvegarde complète de la base de données pour démarrer la chaîne de journal.
Les exemples suivants restaurent les sauvegardes dans une instance où la AdventureWorks2025 base de données n’existe pas, comme un serveur différent.
A. Appliquer une sauvegarde unique du journal des transactions
L’exemple suivant restaure la AdventureWorks2025 base de données à partir d’une sauvegarde complète sur un périphérique de sauvegarde nommé AdventureWorks2025_1. Il applique ensuite la première sauvegarde du journal de transaction depuis un périphérique de sauvegarde nommé AdventureWorks2025_log. Enfin, il restaure la base de données.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
B. Appliquer plusieurs sauvegardes de journaux de transactions
L’exemple suivant restaure la AdventureWorks2025 base de données à partir d’une sauvegarde complète sur un périphérique de sauvegarde nommé AdventureWorks2025_1. Il applique ensuite, une par une, les trois premières sauvegardes du journal de transaction depuis un périphérique de sauvegarde nommé AdventureWorks2025_log. Enfin, il restaure la base de données.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 2,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 3,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
Utiliser PowerShell
Utilisez le Restore-SqlDatabase cmdlet, et définissez le paramètre -RestoreAction sur Log. Incluez le -NoRecovery paramètre pour chaque restauration dans la séquence sauf la dernière. Omettez -NoRecovery lors de la dernière restauration du journal pour récupérer la base de données.
Remarque
Ces exemples nécessitent le module SqlServer. Pour plus d’informations, consultez le fournisseur PowerShell pour SQL Server.
Pour la syntaxe complète, voir Restore-SqlDatabase.
Exemples (PowerShell)
Les exemples suivants restaurent les sauvegardes dans une instance où la base de données AdventureWorks2025 n’existe pas, par exemple sur un autre serveur.
A. Appliquer une sauvegarde unique du journal des transactions
L’exemple suivant restaure la AdventureWorks2025 base de données à partir d’une sauvegarde complète, laissant la base de données dans l’état de restauration. Il applique ensuite une sauvegarde du journal des transactions et restaure la base de données.
$instance = "Computer\Instance"
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_log1.trn"
RestoreAction = "Log"
}
Restore-SqlDatabase @logRestore
B. Appliquer plusieurs sauvegardes de journaux de transactions
L’exemple suivant restaure la sauvegarde complète de la base de données, puis applique trois sauvegardes des journaux de transactions en séquence. Chaque restauration sauf la dernière utilise -NoRecovery, donc la dernière restauration du journal récupère la base de données.
$instance = "Computer\Instance"
$logBackups = @(
"C:\Backup\AdventureWorks2025_log1.trn",
"C:\Backup\AdventureWorks2025_log2.trn",
"C:\Backup\AdventureWorks2025_log3.trn"
)
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
for ($i = 0; $i -lt $logBackups.Count; $i++) {
$isLast = ($i -eq $logBackups.Count - 1)
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = $logBackups[$i]
RestoreAction = "Log"
NoRecovery = -not $isLast
}
Restore-SqlDatabase @logRestore
}
Tâches associées
- Sauvegarder un journal des transactions
- Restaurer une sauvegarde de base de données à l’aide de SSMS
- Restaurer la base de données jusqu’au point de défaillance - Récupération complète
- Restaurer une base de données SQL Server à un moment donné (mode de récupération complet)
- Restaurer une base de données dans une transaction marquée (SQL Server Management Studio)