Partager via


Définir une variable d’état

Cette procédure décrit comment définir une variable de package dans laquelle l’état cdc est stocké.

La variable d’état CDC est chargée, initialisée et mise à jour par la tâche de contrôle CDC et est utilisée par le composant de flux de données source CDC pour déterminer la plage de traitement actuelle pour les enregistrements de modification. La variable d’état CDC peut être définie sur n’importe quel conteneur commun à la tâche de contrôle CDC et à la source CDC. Cela peut être au niveau du package, mais peut également se trouver 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 générale des composants de la valeur de variable d’état CDC.

Composant Descriptif
<state-name> Il s'agit du nom de l'état actuel du CDC.
CS Cela marque le point de départ de la plage de traitement en cours (début actuel).
<cs-lsn> Il s’agit du dernier LSN (Numéro de séquence de journal) processé pendant l’exécution de la capture de données modifiées précédente.
CE Cela marque le point de terminaison de la plage de traitement actuel (fin actuelle). La présence du composant CE dans l'état CDC indique qu'un package CDC est en cours de traitement ou qu'un package CDC a échoué dans le traitement avant d'atteindre entièrement sa plage de traitement CDC.
<ce-lsn> Il s’agit du dernier LSN à traiter dans la session CDC 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.
<ir-start> Il s’agit d’un LSN d’une modification peu avant le début de la charge initiale.
<ir-end> Il s’agit d’un LSN d’une modification juste après la fin du chargement initial.
TS Cette marque l’horodatage de la dernière mise à jour de l’état du CDC.
<horodatage> Il s’agit d’une représentation décimale de la propriété System.DateTime.UtcNow 64 bits.
ER Cela s’affiche lorsque la dernière opération a échoué et inclut une brève description de la cause de l’erreur. Si ce composant est présent, il apparaît toujours en dernier.
<short-error-text> Il s’agit de la brève description d’erreur.

Les numéros LSN et les numéros de séquence sont tous encodés sous la forme d’une chaîne hexadécimale allant jusqu’à 20 chiffres représentant la valeur LSN de Binary(10).

Le tableau suivant décrit les valeurs d’état CDC possibles.

État Descriptif
(INITIAL) Il s’agit de l’état initial avant l’exécution de tout package sur le groupe CDC actuel. Il s'agit également de l'état correspondant à une capture de données modifiées vide.
ILSTART (Démarrage du chargement initial) Il s’agit de l’état au démarrage du package de chargement initial, après l’appel de l’opération MarkInitialLoadStart à la tâche de contrôle CDC.
ILEND (chargement initial terminé) Il s’agit de l’état où le package de chargement initial se termine correctement, 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 des exécutions des mises à jour du package de mise à jour par flux par petites quantités suivant la charge initiale, tout en traitant toujours la plage de traitement initiale. C'est 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 être en train de retraiter des lignes déjà présentes à la cible.
TFEND ( mise à jourTrickle-Feed terminée) 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 non initiale du package de mise à jour du flux progressif, après l’appel de l’opération GetProcessingRange à la tâche de contrôle CDC.

Cela indique qu'une exécution régulière de capture de données modifiées a été démarrée, mais n'a pas terminé ou n'a pas encore terminé correctement (MarkProcessedRange).
TFREDO (retraitement des mises à jour de Trickle-Feed) Il s'agit de l'état sur un GetProcessingRange qui se produit après TFSTART. Il indique que l'exécution précédente ne s'est pas terminée avec succès.

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

Voici des exemples de valeurs de variable d’état CDC.

  • 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 CDC

  1. Dans SQL Server Data Tools, ouvrez le package SQL Server 2014 Integration Services (SSIS) qui a le flux CDC dans lequel vous devez définir la variable.

  2. Cliquez sur l’onglet Explorateur de packages , puis ajoutez une nouvelle variable.

  3. Donnez à la variable un nom que vous pouvez reconnaître comme variable d’état.

  4. Donnez à la variable un type de données String .

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 CDC.

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 sera 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 CDCet 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 variable à partir du stockage persistant où sa valeur a été enregistrée la dernière fois que le package a été exécuté et pour 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