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 d'une base de données activée pour la capture de données modifié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 Utiliser le suivi des modifications (SQL Server).
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 après un basculement, suivez ces étapes :
Vérifiez que l'Agent SQL Server s'exécute sur la nouvelle instance de serveur principal.
Créez le travail de capture et le travail de nettoyage sur la nouvelle base de données principale (base de données miroir initiale). Pour créer les travaux, utilisez la procédure stockée sp_cdc_add_job.
Pour consulter la configuration actuelle d'un travail de capture ou de nettoyage, 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, tandis que 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 Mise en miroir de bases de données (SQL Server).
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. 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 AdventureWorks2012 , 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.
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 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 à l'aide de l'option KEEP_CDC à toute édition autre qu'Enterprise, l'opération est bloquée car la capture de données modifiées requiert 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 de données modifiées d'une base de données restaurée ou attachée.
Voir aussi
Concepts
Administrer et surveiller la capture de données modifiées (SQL Server)