Partager via


Récupération des bases de données associées qui contiennent une transaction marquée

Cette rubrique s’applique uniquement aux bases de données qui contiennent des transactions marquées et qui utilisent les modèles de récupération complètes ou journalisées en bloc.

Pour plus d’informations sur la configuration requise pour la restauration vers un point de récupération spécifique, consultez Restaurer une base de données SQL Server à un point dans le temps (modèle de récupération complète).

SQL Server prend en charge l’insertion de marques nommées dans le journal des transactions afin de permettre la récupération jusqu'à cette marque spécifique. Les marques de journal sont spécifiques à la transaction et sont insérées uniquement si leur transaction associée est valide. Par conséquent, les marques peuvent être liées à un travail spécifique et vous pouvez revenir à un point qui inclut ou exclut ce travail.

Avant d’insérer des marques nommées dans le journal des transactions, tenez compte des éléments suivants :

Syntaxe Transact-SQL pour insérer des marques nommées dans le journal des transactions

Pour insérer des marques dans les journaux des transactions, utilisez l’instruction BEGIN TRANSACTION et la clause WITH MARK [description]. La marque est nommée de la même façon que la transaction. La description facultative est une description textuelle de la marque, et non le nom de la marque. Par exemple, le nom de la transaction et de la marque créée dans l’instruction suivante BEGIN TRANSACTION est Tx1:

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'    

Le journal des transactions enregistre le nom de la marque (nom de transaction), la description, la base de données, l’utilisateur, datetime les informations et le numéro de séquence de journal (LSN). Les datetime informations sont utilisées avec le nom de la marque pour identifier de manière unique la marque.

Pour plus d’informations sur l’insertion d’une marque dans une transaction qui s’étend sur plusieurs bases de données, consultez Utiliser des transactions marquées pour récupérer des bases de données associées de manière cohérente (mode de récupération complète).

Syntaxe Transact-SQL pour le retour vers une marque

Lorsque vous ciblez une transaction marquée à l’aide d’une instruction RESTORE LOG, vous pouvez utiliser l’une des clauses suivantes pour vous arrêter à la marque ou immédiatement avant celle-ci :

  • Utilisez la clause WITH STOPATMARK = '<mark_name>' pour spécifier que la transaction marquée est le point de récupération.

    STOPATMARK avance jusqu'à la marque et inclut la transaction marquée dans le déplacement vers l'avant.

  • Utilisez la clause WITH STOPBEFOREMARK = '<mark_name>' pour spécifier que l’enregistrement du journal qui est immédiatement avant la marque est le point de récupération.

    STOPBEFOREMARK avance jusqu'à la marque et exclut la transaction du processus de restauration.

Les options STOPATMARK et STOPBEFOREMARK prennent tous deux en charge une clause AFTER datetime facultative. Lorsque datetime est utilisé, les noms de marques ne doivent pas être uniques.

Si "AFTER" datetime est omis, l'avancée s'arrête à la première marque portant le nom spécifié. Si AFTER datetime est spécifié, la restauration s’arrête à la première marque portant le nom spécifié, exactement à datetime ou après.

Remarque

Comme dans toutes les opérations de restauration dans le temps, la récupération vers une marque n’est pas autorisée lorsque la base de données subit des opérations qui sont journalisées en bloc.

Pour effectuer une restauration vers une transaction marquée

Restaurer une base de données dans une transaction marquée (SQL Server Management Studio)

RESTORE (Transact-SQL)

Préparation des sauvegardes de journaux

Pour cet exemple, une stratégie de sauvegarde appropriée pour ces bases de données associées serait la suivante :

  1. Utilisez le modèle de récupération complète pour les deux bases de données.

  2. Créez une sauvegarde complète de chaque base de données.

    Les bases de données peuvent être sauvegardées séquentiellement ou simultanément.

  3. Avant de sauvegarder le journal des transactions, marquez une transaction qui s’exécute dans toutes les bases de données. Pour plus d’informations sur la création des transactions marquées, consultez Utiliser des transactions marquées pour récupérer des bases de données associées de manière cohérente (mode de récupération complète).

  4. Sauvegardez le journal des transactions sur chaque base de données.

Récupération de la base de données vers une transaction marquée

Pour restaurer la sauvegarde

  1. Créez des sauvegardes du journal des transactions des bases de données non endommagées, si possible.

  2. Restaurez la sauvegarde complète de base de données la plus récente de chaque base de données.

  3. Identifiez la transaction marquée la plus récente disponible dans toutes les sauvegardes du journal des transactions. Ces informations sont stockées dans la table logmarkhistory dans la base de données msdb sur chaque serveur.

  4. Identifiez les sauvegardes de journaux (log) pour toutes les bases de données associées qui contiennent cette marque.

  5. Restaurez chaque sauvegarde de journal, en vous arrêtant à la transaction marquée.

  6. Récupérez chaque base de données.

Voir aussi

BEGIN TRANSACTION (Transact-SQL)
RESTORE (Transact-SQL)
Appliquer des sauvegardes de journal des transactions (SQL Server)
Utiliser des transactions marquées pour récupérer des bases de données associées de manière cohérente (modèle de récupération complète)
Vue d'ensemble de la restauration et de la récupération (SQL Server)
Restaurer une base de données SQL Server à un point dans le temps (modèle de récupération complète)
Planifier et effectuer des séquences de restauration (modèle de récupération complète)