Définir une variable d’étatDefine a State Variable

Cette procédure explique comment définir une variable de package dans laquelle l'état de capture de données modifiées est stocké.This procedure describes how to define a package variable where the CDC state is stored.

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.The CDC state variable is loaded, initialized, and updated by the CDC Control task and is used by the CDC Source data flow component to determine the current processing range for change records. 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.The CDC state variable can be defined on any container common to the CDC Control task and the CDC source. La définition peut être effectuée au niveau du package mais également sur d'autres conteneurs, tel qu'un conteneur de boucles.This may be at the package level but may also be on other containers such as a loop container.

Il est déconseillé de modifier manuellement la valeur d'une variable d'état de capture de données modifiées. Toutefois, cela peut être utile pour comprendre son contenu.Manually modifying the CDC state variable value is not recommended, however it can be useful to understand its contents.

Le tableau suivant fournit une description globale des composants de la valeur de variable d'état de capture de données modifiées.The following table provides a high-level description of the components of the CDC state variable value.

ComposantComponent DescriptionDescription
<state-name><state-name> Il s'agit du nom de l'état de capture de données modifiées actuel.This is the name of the current CDC state.
CSCS Cela marque le point de départ de la plage de traitement actuelle (début actuel).This marks the current processing range start point (Current Start).
<CS-lsn><cs-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.This is the last (Log Sequence Number) LSN processed in the previous CDC run.
CECE Cela marque le point d'arrivée de la plage de traitement actuelle (fin actuelle).This marks the current processing range end point (Current End). 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.The presence of the CE component in the CDC state is an indication that either a CDC package is currently processing or that a CDC package failed before fully processing its CDC processing range.
<ce-lsn><ce-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.This is the last LSN to be processed in the current CDC Run. On part du principe que le dernier numéro de séquence à traiter correspond au maximum (0xFFF…).It is always assumed that the last sequence number to be processed is the maximum (0xFFF…).
IRIR Cela marque la plage de traitement initiale.This marks the initial processing range.
<ir-start><ir-start> Il s'agit d'un numéro séquentiel dans le journal d'un changement juste avant le début de la charge initiale.This is an LSN of a change just before the initial load began.
<ir-end><ir-end> Il s'agit d'un numéro séquentiel dans le journal d'un changement juste après la fin de la charge initiale.This is an LSN of a change just after the initial load ended.
TSTS Cela marque l'horodateur pour la dernière mise à jour de l'état de capture de données modifiées.This marks the timestamp for the last CDC state update.
<timestamp><timestamp> Il s'agit d'une représentation décimale de la propriété de 64 bits, System.DateTime.UtcNow.This is a decimal representation of the 64-bit, System.DateTime.UtcNow property.
ERER 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.This appears when the last operation failed and includes a short description of the cause of the error. Si ce composant est présent, il apparaît toujours en dernier.If this component is present, it will always appear last.
<short-error-text><short-error-text> Il s'agit de la brève description de l'erreur.This is the short error description.

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).The LSNs and sequence numbers are each encoded as a hexadecimal string of up to 20 digits representing the LSN value of Binary(10).

Le tableau suivant décrit les valeurs possibles d'état de capture de données modifiées.The following table describes the possible CDC state values.

ÉtatState DescriptionDescription
(INITIAL)(INITIAL) Il s'agit de l'état initial avant l'exécution d'un package sur le groupe CDC actuel.This is the initial state before the any package was run on the current CDC group. Il s'agit également de l'état correspondant à une capture de données modifiées vide.This is also the state when the CDC state is empty.
ILSTART (charge initiale démarrée)ILSTART (Initial Load Started) 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.This is the state when the initial load package starts, after the MarkInitialLoadStart operation call to the CDC Control task.
ILEND (fin de la charge initiale)ILEND (Initial Load Ended) 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.This is the state when the initial load package ends successfully, after the MarkInitialLoadEnd operation call to the CDC Control task.
ILUPDATE (mise à jour de la charge initiale)ILUPDATE (Initial Load Update) 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.This is the state on the runs of the trickle feed update package following the initial load, while still processing the initial processing range. Il est constaté après l'appel de l'opération GetProcessingRange à la tâche de contrôle CDC.This is after the GetProcessingRange operation call to the CDC Control task.

Si vous utilisez la colonne $reprocessing, elle contient la valeur 1 pour indiquer que le package peut retraiter des lignes qui sont déjà au niveau de la cible.If using the $reprocessing column, it is set to 1 to indicate that the package may be re-processing rows already at the target.
TFEND (fin de la mise à jour à flux progressif)TFEND (Trickle-Feed Update Ended) Il s'agit de l'état attendu pour une exécution CDC normale.This is the state expected for regular CDC runs. 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.It indicates that the previous run completed successfully and that a new run with a new processing range can be started.
TFSTARTTFSTART Il s’agit de l’état sur une exécution non initiale du package de mise à jour à flux progressif, après l’appel de l’opération GetProcessingRange à la tâche de contrôle CDC.This is the state on a non-initial run of the trickle feed update package, after the GetProcessingRange operation call to the CDC Control task.

Il indique qu’une exécution CDC normale a démarré mais n’est pas terminée ou ne s’est pas encore terminée correctement (MarkProcessedRange).This indicates that a regular CDC run is started but has not finished or has not yet finished, cleanly (MarkProcessedRange).
TFREDO (Retraitement des mises à jour à flux progressif)TFREDO (Reprocessing Trickle-Feed Updates) Il s'agit de l'état d'un GetProcessingRange qui se produit après TFSTART.This is the state on a GetProcessingRange that occurs after TFSTART. Il indique que l'exécution précédente ne s'est pas terminée avec succès.This indicates that the previous run did not complete successfully.

Si vous utilisez la colonne $reprocessing, elle contient la valeur 1 pour indiquer que le package peut retraiter des lignes qui sont déjà au niveau de la cible.If using the $reprocessing column, it is set to 1 to indicate that the package may be re-processing rows already at the target.
ERRORERROR Le groupe CDC est dans un état ERROR.The CDC group is in an ERROR state.

Voici des exemples de valeurs de variable d'état de capture de données modifiées.The following are examples of CDC state variable values.

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

  • 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/TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/

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

  • TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/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éesTo define a CDC state variable

  1. Dans Outils de données SQL ServerSQL Server Data Tools, ouvrez le package SQL Server 2017 Integration Services (SSIS)SQL Server 2017 Integration Services (SSIS) contenant le flux de données de capture de données modifiées dans lequel vous devez définir la variable.In Outils de données SQL ServerSQL Server Data Tools, open the SQL Server 2017 Integration Services (SSIS)SQL Server 2017 Integration Services (SSIS) package that has the CDC flow where you need to define the variable.

  2. Cliquez sur l'onglet Explorateur de package , puis ajoutez une nouvelle variable.Click the Package Explorer tab, and add a new variable.

  3. Attribuez à la variable un nom que vous pouvez identifier en tant que variable d'état.Give the variable a name that you can recognize as your state variable.

  4. Attribuez à la variable le type de données Chaîne .Give the variable a String data type.

    N'attribuez pas une valeur à la variable dans le cadre de sa définition.Do not give the variable a value as part of its definition. La valeur doit être définie par la tâche de contrôle de capture de données modifiées.The value must be set by the CDC Control task.

    Si vous envisagez d'utiliser la tâche de contrôle de capture de données modifiées avec Permanence d'état automatique, la variable d'état de capture de données modifiées sera lue dans la table d'état de la base de données que vous spécifiez et sera remise à jour dans cette même table lorsque sa valeur sera modifiée.If you plan to use the CDC Control task with Automatic State Persistence, the CDC State variable will be read from the database state table you specify and will be updated back to that same table when its value changes. Pour plus d'informations sur la table d'état, consultez CDC Control Tasket CDC Control Task Editor.For more information about the State table, see CDC Control Taskand CDC Control Task Editor.

    Si vous n'utilisez pas la tâche de contrôle de capture de données modifiées avec Permanence d'état automatique, vous devez charger la valeur de la variable depuis le stockage permanent dans lequel sa valeur a été enregistrée lors la dernière exécution du package, puis la réécrire dans le stockage permanent une fois le traitement de la plage de traitement actuelle terminé.If you are not using the CDC Control task with Automatic State Persistence then you must load the variable value from persistent storage where its value was saved the last time the package ran and to write it back to the persistent storage when the processing of the current processing range was completed.

Voir aussiSee Also

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