Définir une variable d’état

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

Important

Les composants de Flow CDC, notamment la tâche de contrôle CDC, la source CDC et le séparateur CDC, sont déconseillés. Pour les détails, référez-vous à l'annonce.

Cette procédure explique comment définir une variable de package dans laquelle l'état de capture de données modifiées est stocké.

La variable d'état de capture de données modifiées est chargée, initialisée et mise à jour par la tâche de contrôle de capture de données modifiées et est utilisée par le composant de flux de données de la source CDC pour déterminer la plage de traitement actuelle des enregistrements de modification. La variable d'état de capture de données modifiées peut être définie sur n'importe quel conteneur commun à la tache de contrôle de capture de données modifiées et à la source CDC. Cela peut être au niveau du package, mais également sur d’autres conteneurs tels qu’un conteneur de boucles.

La modification manuelle de la valeur de la variable d’état CDC n’est pas recommandée, mais il peut être utile de comprendre son contenu.

Le tableau suivant fournit une description globale des composants de la valeur de variable d'état de capture de données modifiées.

Composant Description
<nom_état> Il s'agit du nom de l'état de capture de données modifiées actuel.
CS Cela marque le point de départ de la plage de traitement actuelle (début actuel).
<da-lsn> Il s'agit du dernier numéro séquentiel dans le journal (NSE) traité dans l'exécution de capture de données modifiées précédente.
CE Cela marque le point d'arrivée de la plage de traitement actuelle (fin actuelle). La présence du composant CE dans l'état de capture de données modifiées indique qu'un package de capture de données modifiées est actuellement en cours de traitement ou qu'un package de capture de données modifiées a échoué avant la fin du traitement complet de sa plage de traitement de capture de données modifiées.
<fa-lsn> Il s'agit du dernier numéro séquentiel dans le journal à traiter dans l'exécution de capture de données modifiées actuelle. Il est toujours supposé que le dernier nombre de séquences à traiter est le maximum (0xFFF...).
IR Cela marque la plage de traitement initiale.
<début_pi> Il s'agit d'un numéro séquentiel dans le journal d'un changement juste avant le début de la charge initiale.
<fin_pi> Il s'agit d'un numéro séquentiel dans le journal d'un changement juste après la fin de la charge initiale.
TS Cela marque l'horodateur pour la dernière mise à jour de l'état de capture de données modifiées.
<timestamp> Il s'agit d'une représentation décimale de la propriété de 64 bits, System.DateTime.UtcNow.
ER Ce message apparaît lorsque la dernière opération a échoué et il inclut une brève description de la cause de l'erreur. Si ce composant est présent, il apparaît toujours en dernier.
<texte_erreur_court> Il s'agit de la brève description de l'erreur.

Les numéros séquentiels dans le journal et les numéros de séquence sont tous encodés sous forme de chaîne hexadécimale comportant jusqu'à 20 chiffres représentant la valeur du numéro séquentiel dans le journal de Binary(10).

Le tableau suivant décrit les valeurs possibles d'état de capture de données modifiées.

State Description
(INITIAL) Il s’agit de l’état initial avant l’exécution d’un package sur le groupe CDC actuel. Il s'agit également de l'état correspondant à une capture de données modifiées vide.
ILSTART (charge initiale démarrée) Il s'agit de l'état au démarrage du package de charge initiale, après l'appel de l'opération MarkInitialLoadStart à la tâche de contrôle CDC.
ILEND (fin de la charge initiale) Il s'agit de l'état à la fin du package de charge initiale, après l'appel de l'opération MarkInitialLoadEnd à la tâche de contrôle CDC.
ILUPDATE (mise à jour de la charge initiale) Il s'agit de l'état lors des exécutions du package de mise à jour à flux progressif, suivant la charge initiale, alors que le traitement de la plage initiale est encore en cours. Il est constaté après l'appel de l'opération GetProcessingRange à la tâche de contrôle CDC.

Si vous utilisez la colonne __$reprocessing, elle est définie sur 1 pour indiquer que le package peut retraiter des lignes déjà sur la cible.
TFEND (fin de la mise à jour à flux progressif) Il s'agit de l'état attendu pour une exécution CDC normale. Il indique que l'exécution précédente a réussi et qu'une nouvelle exécution avec une nouvelle plage de traitement peut démarrer.
TFSTART Il s’agit de l’état d’une exécution noninitielle du package de mise à jour du flux de tourment, après l’appel de l’opération GetProcessingRange à la tâche de contrôle CDC.

Cela indique qu’une exécution de capture de données modifiées régulière est démarrée, mais qu’elle n’a pas encore terminé ou n’a pas encore terminé, proprement (MarkProcessedRange).
TFREDO (Retraitement des mises à jour à flux progressif) Il s'agit de l'état d'un GetProcessingRange qui se produit après TFSTART. Cela indique que l’exécution précédente n’a pas réussi.

Si vous utilisez la colonne __$reprocessing, elle est définie sur 1 pour indiquer que le package peut retraiter des lignes déjà sur la cible.
ERROR Le groupe CDC est dans un état ERROR.

Voici des exemples de valeurs de variable d'état de capture de données modifiées.

  • ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/

  • ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/

  • TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/

  • TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/

  • TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/

Pour définir une variable d'état de capture de données modifiées

  1. Dans SQL Server Data Tools, ouvrez le package SQL Server 2019 Integration Services (SSIS) contenant le flux de données de capture de données modifiées dans lequel vous devez définir la variable.

  2. Sélectionnez l’onglet Explorateur de packages et ajoutez une nouvelle variable.

  3. Attribuez à la variable un nom que vous pouvez identifier en tant que variable d'état.

  4. Attribuez à la variable le type de données Chaîne .

Ne donnez pas à la variable une valeur dans le cadre de sa définition. La valeur doit être définie par la tâche de contrôle de capture de données modifiées.

Si vous envisagez d’utiliser la tâche de contrôle CDC avec persistance d’état automatique, la variable d’état cdc est lue à partir de la table d’état de base de données que vous spécifiez et est mise à jour vers cette même table lorsque sa valeur change. Pour plus d’informations sur la table State, consultez la tâche de contrôle CDC et l’éditeur de tâche de contrôle CDC.

Si vous n’utilisez pas la tâche de contrôle CDC avec persistance d’état automatique, vous devez charger la valeur de la variable à partir du stockage persistant où sa valeur a été enregistrée la dernière fois que le package a été exécuté et l’écrire dans le stockage persistant lorsque le traitement de la plage de traitement actuelle a été terminé.

Voir aussi

Tâche de contrôle de capture de données modifiées
Éditeur de tâche de contrôle CDC