Partager via


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

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

  • Suivi des modifications

  • Mise en miroir de bases de données

  • Réplication transactionnelle

  • Restauration ou attachement de base de données

Suivi des modifications

La capture de 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 n'est requise. Pour plus d'informations, consultez Suivi des modifications.

Mise en miroir de bases de données

Une base de données prenant en charge la capture de données modifiées peut être mise en miroir. Pour faire en sorte que la capture et le nettoyage s'exécutent automatiquement sur le miroir, suivez ces étapes :

  1. Vérifiez que l'Agent SQL Server s'exécute sur le miroir.

  2. Créez le travail de capture et le travail de nettoyage sur le miroir le basculement de l'unité principale sur l'unité miroir. Pour créer les travaux, utilisez la procédure stockée dans la base de données sys.sp_cdc_add_job (Transact-SQL).

Pour plus d'informations sur la mise en miroir de bases de données, consultez Mise en miroir de bases de données.

Réplication transactionnelle

La capture de données modifiées et la réplication transactionnelle peuvent coexister dans la même base de données, mais le remplissage des tables de modifications est géré différemment lorsque les deux fonctions 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 des modifications du journal des transactions. Lorsque la capture de données modifiées est activée toute seule, un travail de l'Agent SQL Server appelle sp_replcmds. Pour plus d'informations, consultez Travail de capture. 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 à la fois les tables de modifications et les tables de bases de données de distribution. Pour plus d'informations, consultez Agent de lecture du journal des réplications.

Considérez un scénario dans lequel la capture de données modifiées est activée sur la base de données AdventureWorks, et deux tables sont activées pour la capture. Pour remplir les tables de modifications, 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. Ensuite, l'Agent de lecture du journal est créé pour la base de données et le travail de capture est supprimé. L'Agent de lecture du journal continue à analyser le journal à partir du dernier numéro séquentiel dans le journal qui été validé dans la table de modifications. Cela garantit la cohérence des données dans les tables de modifications. 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é à la fois pour la capture de données modifiées et la réplication transactionnelle, les modifications répliquées sont écrites en premier dans la base de données de distribution. Puis, les modifications capturées sont écrites dans les tables de modifications. Les deux opérations sont validées ensemble. En cas de latence de l'écriture dans la base de données de distribution, une latence correspondante se produit avant que les modifications apparaissent dans les tables de modifications.

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 active après qu'une base de données a été restaurée ou jointe :

  • Si une base de données est restaurée au 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 à un autre serveur, par défaut, la capture de données modifiées est désactivée par défaut et toutes les métadonnées connexes sont supprimées.

    Pour conserver la fonction de capture de 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 puis 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 à toute édition autre qu'Enterprise, l'opération est bloquée parce que la capture de données modifiées requiert SQL Server Enterprise. Le message d'erreur 932 est affiché :

    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 de données modifiées d'une base de données restaurée ou attachée.