Partager via


Capture de données modifiées et autres fonctionnalités SQL Server

Cette rubrique décrit comment les fonctionnalités suivantes interagissent avec la capture de données modifiées :

Suivi des modifications

La capture des données modifiées et le suivi des modifications peuvent être activés sur la même base de données. Aucune considération particulière ne s'applique. Pour plus d’informations, consultez Work with Change Tracking (SQL Server).

Mise en miroir de bases de données

Une base de données activée pour la capture de données modifiées peut être mise en miroir. Pour vous assurer que la capture et le nettoyage se produisent automatiquement après un basculement, procédez comme suit :

  1. Vérifiez que SQL Server Agent s’exécute sur la nouvelle instance de serveur principal.

  2. Créez le travail de capture et le travail de nettoyage sur la nouvelle base de données principale (l’ancienne base de données miroir). Pour créer les travaux, utilisez la procédure stockée sp_cdc_add_job .

Pour afficher la configuration actuelle d’un travail de nettoyage ou de capture, utilisez la procédure stockée sys.sp_cdc_help_jobs sur la nouvelle instance de serveur principal. Pour une base de données donnée, le travail de capture est nommé cdc. database_name_capture et le travail de nettoyage est nommé cdc. database_name_cleanup, où database_name est le nom de la base de données.

Pour modifier la configuration d’un travail, utilisez la procédure stockée sys.sp_cdc_change_job .

Pour plus d’informations sur la mise en miroir de bases de données, consultez La mise en miroir de bases de données (SQL Server)

Réplication transactionnelle

La capture des données modifiées et la réplication transactionnelle peuvent coexister dans la même base de données, mais la population des tables de modifications est gérée différemment lorsque les deux fonctionnalités sont activées. La capture de données modifiées et la réplication transactionnelle utilisent toujours la même procédure, sp_replcmds, pour lire les modifications du journal des transactions. Lorsque la capture de données modifiées est activée de manière autonome, une tâche SQL Server Agent appelle sp_replcmds. Lorsque les deux fonctionnalités sont activées sur la même base de données, l’Agent de lecture du journal appelle sp_replcmds. Cet agent remplit les tables de modification et les tables de base de données de distribution. Pour plus d’informations, consultez l’Agent de lecture du journal de réplication.

Envisagez un scénario dans lequel la capture de données modifiées est activée sur la base de données AdventureWorks2012 , et deux tables sont activées pour la capture. Pour remplir les tables de modification, le travail de capture appelle sp_replcmds. La base de données est activée pour la réplication transactionnelle et une publication est créée. À présent, l’Agent de lecture du journal est créé au sein de la base de données et la tâche de capture est supprimée. L’Agent de lecture du journal continue d’analyser le journal à partir du dernier numéro de séquence de journal qui a été validé dans la table des modifications. Cela garantit la cohérence des données dans les tables de modification. Si la réplication transactionnelle est désactivée dans cette base de données, l’Agent de lecture du journal est supprimé et le travail de capture est recréé.

Remarque

Lorsque l’Agent de lecture du journal est utilisé pour la capture de données modifiées et la réplication transactionnelle, les modifications répliquées sont d’abord écrites dans la base de données de distribution. Ensuite, les modifications capturées sont écrites dans les tables de modifications. Les deux opérations sont engagées ensemble. S’il existe une latence en écriture dans la base de données de distribution, il y aura une latence correspondante avant que les modifications n’apparaissent dans les tables de modifications.

L’option proc exec de réplication transactionnelle n’est pas disponible lorsque la capture de données modifiées est activée.

Restauration ou attachement d’une base de données activée pour la capture de données modifiées

SQL Server utilise la logique suivante pour déterminer si la capture de données modifiées reste activée après la restauration ou l’attachement d’une base de données :

  • Si une base de données est restaurée sur le même serveur avec le même nom de base de données, la capture de données modifiées reste activée.

  • Si une base de données est restaurée sur un autre serveur, la capture de données modifiées par défaut est désactivée et toutes les métadonnées associées sont supprimées.

    Pour conserver la capture des données modifiées, utilisez l’option KEEP_CDC lors de la restauration de la base de données. Pour plus d’informations sur cette option, consultez RESTORE.

  • Si une base de données est détachée et attachée au même serveur ou à un autre serveur, la capture de données modifiées reste activée.

  • Si une base de données est attachée ou restaurée avec l’option KEEP_CDC vers n’importe quelle édition autre que Enterprise, l’opération est bloquée, car la capture de données modifiées nécessite SQL Server Enterprise. Le message d’erreur 934 s’affiche :

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

Vous pouvez utiliser sys.sp_cdc_disable_db pour supprimer la capture des données modifiées d’une base de données restaurée ou attachée.

Capture de données modifiées et AlwaysON

Lorsque vous utilisez AlwaysON, l’énumération des modifications doit être effectuée sur la réplication secondaire pour réduire la charge du disque sur le serveur principal.

Voir aussi

Administrer et surveiller la capture de données modifiées (SQL Server)