Partager via


Travail de capture

Le travail de capture est démarré par l'exécution de la procédure stockée sans paramètre sp_MScdc_capture_job. Cette procédure stockée démarre par l'extraction des valeurs configurées pour maxtrans, maxscans, continuouset pollinginterval pour le travail de capture de msdb.dbo.cdc_jobs. Ces valeurs configurées sont ensuite transférées en tant que paramètres à la procédure stockée sp_cdc_scan. Cela permet d'invoquer sp_replcmds pour effectuer l'analyse du journal.

Paramètres du travail de capture

Pour comprendre le comportement du travail de capture, vous devez comprendre comment les paramètres configurables sont utilisés par sp_cdc_scan.

Paramètre maxtrans

Le paramètre maxtrans spécifie le nombre maximal de transactions qui peuvent être traitées au cours d'un même cycle d'analyse du journal. Si, au cours de l'analyse, le nombre de transactions à traiter atteint cette limite, aucune transaction supplémentaire n'est incluse dans l'analyse en cours. Une fois le cycle d'analyse terminé, le nombre de transactions qui ont été traitées sera toujours inférieur ou égal à maxtrans.

Paramètre maxscans

Le paramètre maxscans spécifie le nombre maximal de cycles d'analyse tentés pour vider le journal avant de retourner (continuous = 0) ou d'exécuter un waitfor (continuous = 1).

Paramètre continuous

Le paramètre continuous détermine si sp_cdc_scan rend le contrôle après avoir vidé le journal ou après avoir exécuté le nombre maximal de cycles d'analyse (mode en une seule fois). Il détermine également si sp_cdc_scan poursuit son exécution tant qu'il n'est pas explicitement arrêté (mode continuous).

Mode en une seule fois

En mode en une seule fois, le travail de capture demande à sp_cdc_scan d'effectuer jusqu'à maxtrans analyses pour essayer de vider le journal et retourner les données. Toute transaction au-delà de maxtrans qui est présente dans le journal sera traitée dans les analyses ultérieures.

Le mode en une seule fois est utilisé dans les tests contrôlés, où le volume des transactions à traiter est connu, et où il y a un avantage au fait que le travail se termine automatiquement une fois terminé. Le mode en une seule fois n'est pas recommandé dans un environnement de production. La raison en est que t s'appuie sur la planification du travail pour déterminer la fréquence d'exécution du cycle d'analyse.

En mode en une seule fois, vous pouvez calculer une limite supérieure pour le débit attendu du travail de capture, exprimé en transactions par seconde, à l'aide de la formule suivante :

(maxtrans * maxscans) / number of seconds between scans

Même si l'heure qui est requise pour analyser le journal et remplir les tables de modifications n'est pas significativement différente de 0, le débit moyen du travail ne peut pas dépasser la valeur obtenue en divisant le nombre maximum de transactions autorisé pour une seule analyse multiplié par le nombre maximum autorisé d'analyses par le nombre de secondes séparant deux traitements du journal.

Si le mode en une seule fois était utilisé pour régler l'analyse du journal, le nombre de secondes entre deux traitements du journal devrait être déterminé par la planification du travail. Lorsque ce type de comportement est souhaité, l'exécution du travail de capture en mode continu est préférable pour gérer la replanification de l'analyse du journal.

Mode continu et fréquence d'interrogation

En mode continu, le travail de capture demande que sp_cdc_scan soit exécuté en continu. Cela permet à la procédure stockée de gérer sa propre boucle d'attente en fournissant non seulement une valeur à maxtrans et maxscans mais également au nombre de secondes entre deux traitements du journal (la fréquence d'interrogation). Dans ce mode, le travail de capture reste actif et exécute un WAITFOR entre chaque analyse du journal.

[!REMARQUE]

Lorsque la valeur de la fréquence d'interrogation est supérieure à 0, la limite supérieure imposée au débit du travail en une seule fois périodique s'applique également au déroulement du travail en mode continu. Autrement dit, (maxtrans * maxscans) divisé par une fréquence d'interrogation différente de zéro imposera une limite supérieure au nombre moyen des transactions pouvant être traitées par le travail de capture.

Personnalisation du travail de capture

Pour le travail de capture, vous pouvez appliquer une logique supplémentaire afin de déterminer si une nouvelle analyse commence immédiatement ou à l'issue d'une période de veille, au lieu de s'en remettre à une fréquence d'interrogation fixe. Le choix pourrait reposer uniquement sur l'heure du jour, par exemple en mettant en place de très longues veilles pendant les périodes de pic d'activité, ou même passer à une fréquence d'interrogation de 0 à la fin de la journée, moment où il est important de mettre fin aux traitements de jour et de préparer les opérations de nuit. La progression du processus de capture peut également être surveillée afin de déterminer à quel moment toutes les transactions validées en milieu de la nuit ont été analysées et déposées dans les tables de modifications. Cela permet au travail de capture de s'achever, pour être redémarré par un redémarrage quotidien planifié. En remplaçant l'étape de remise de travail qui appelle sp_cdc_scan par un appel à un wrapper écrit par un utilisateur pour sp_cdc_scan, vous pouvez disposer d'un comportement hautement personnalisé, pour un minimum d'effort supplémentaire.

Voir aussi

Concepts