Definire una variabile di statoDefine a State Variable

In questa procedura viene descritto come definire una variabile del pacchetto in cui è archiviato lo stato CDC.This procedure describes how to define a package variable where the CDC state is stored.

La variabile di stato CDC viene caricata, inizializzata e aggiornata tramite l'attività di controllo CDC e viene utilizzata dal componente flusso di dati dell'origine CDC per determinare l'intervallo di elaborazione corrente per i record delle modifiche.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. È possibile definire la variabile di stato CDC in qualsiasi contenitore comune all'attività di controllo CDC e all'origine CDC.The CDC state variable can be defined on any container common to the CDC Control task and the CDC source. Ciò può avvenire a livello di pacchetto, ma anche in altri contenitori, ad esempio un contenitore Ciclo.This may be at the package level but may also be on other containers such as a loop container.

Non è consigliabile modificare manualmente il valore della variabile di stato CDC, tuttavia questa operazione può risultare utile per comprenderne il contenuto.Manually modifying the CDC state variable value is not recommended, however it can be useful to understand its contents.

Nella tabella seguente viene fornita una descrizione di alto livello dei componenti del valore della variabile di stato CDC.The following table provides a high-level description of the components of the CDC state variable value.

ComponenteComponent DescriptionDescription
<nome dello stato ><state-name> Si tratta del nome dello stato CDC corrente.This is the name of the current CDC state.
CSCS Viene contrassegnato il punto di inizio dell'intervallo di elaborazione corrente (inizio corrente).This marks the current processing range start point (Current Start).
<cs-lsn ><cs-lsn> Si tratta dell'ultimo numero di sequenza del file di log (LSN) elaborato nell'esecuzione CDC precedente.This is the last (Log Sequence Number) LSN processed in the previous CDC run.
CECE Viene contrassegnato il punto di fine dell'intervallo di elaborazione corrente (fine corrente).This marks the current processing range end point (Current End). La presenza del componente CE nello stato CDC indica che un pacchetto CDC è attualmente in fase di elaborazione o che si è verificato un errore di esecuzione di un pacchetto CDC prima del completamento dell'elaborazione dell'intervallo di elaborazione CDC.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> Si tratta dell'ultimo LSN da elaborare nell'esecuzione CDC corrente.This is the last LSN to be processed in the current CDC Run. Viene sempre presupposto che l'ultimo numero di sequenza da elaborare sia il valore massimo (0xFFF…).It is always assumed that the last sequence number to be processed is the maximum (0xFFF…).
IRIR Viene contrassegnato l'intervallo di elaborazione iniziale.This marks the initial processing range.
<IR start ><ir-start> Si tratta di un numero LSN di una modifica appena prima dell'avvio del caricamento iniziale.This is an LSN of a change just before the initial load began.
<IR-end ><ir-end> Si tratta di un numero LSN di una modifica appena dopo il completamento del caricamento iniziale.This is an LSN of a change just after the initial load ended.
TSTS Viene contrassegnato il timestamp per l'ultimo aggiornamento dello stato CDC.This marks the timestamp for the last CDC state update.
<timestamp ><timestamp> Si tratta di una rappresentazione decimale della proprietà System.DateTime.UtcNow a 64 bit.This is a decimal representation of the 64-bit, System.DateTime.UtcNow property.
ERER Viene visualizzato quando si verifica un errore durante l'esecuzione dell'ultima operazione ed è inclusa una breve descrizione della causa dell'errore.This appears when the last operation failed and includes a short description of the cause of the error. Se il componente è presente, viene sempre visualizzato per ultimo.If this component is present, it will always appear last.
<testo di errore breve ><short-error-text> Si tratta della breve descrizione dell'errore.This is the short error description.

I numeri LSN e di sequenza sono tutti codificati come stringa esadecimale fino a un massimo di 20 cifre che rappresentano il valore LSN di 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).

Nella tabella seguente vengono descritti i possibili valori dello stato CDC.The following table describes the possible CDC state values.

StateState DescriptionDescription
(INITIAL)(INITIAL) Si tratta dello stato iniziale prima dell'esecuzione di qualsiasi pacchetto nel gruppo CDC corrente.This is the initial state before the any package was run on the current CDC group. È anche lo stato quando lo stato CDC è vuoto.This is also the state when the CDC state is empty.
ILSTART (Initial Load Started)ILSTART (Initial Load Started) Si tratta dello stato all'avvio del pacchetto di caricamento iniziale, dopo la chiamata dell'operazione MarkInitialLoadStart all'attività di controllo CDC.This is the state when the initial load package starts, after the MarkInitialLoadStart operation call to the CDC Control task.
ILEND (Initial Load Ended)ILEND (Initial Load Ended) Si tratta dello stato al corretto completamento del pacchetto di caricamento iniziale, dopo la chiamata dell'operazione MarkInitialLoadEnd all'attività di controllo CDC.This is the state when the initial load package ends successfully, after the MarkInitialLoadEnd operation call to the CDC Control task.
ILUPDATE (Initial Load Update)ILUPDATE (Initial Load Update) Si tratta dello stato durante l'esecuzione del pacchetto di aggiornamento Trickle-Feed in seguito al caricamento iniziale, mentre l'elaborazione dell'intervallo di elaborazione iniziale è ancora in corso.This is the state on the runs of the trickle feed update package following the initial load, while still processing the initial processing range. Si verifica dopo la chiamata dell'operazione GetProcessingRange all'attività di controllo CDC.This is after the GetProcessingRange operation call to the CDC Control task.

Se si utilizza la colonna $reprocessing, viene impostato su 1 per indicare che a livello di destinazione è possibile che le righe siano già in corso di rielaborazione.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 (Trickle-Feed Update Ended)TFEND (Trickle-Feed Update Ended) Si tratta dello stato previsto per le esecuzioni CDC normali.This is the state expected for regular CDC runs. Indica che l'esecuzione precedente è stata completata e che è possibile avviare una nuova esecuzione con un nuovo intervallo di elaborazione.It indicates that the previous run completed successfully and that a new run with a new processing range can be started.
TFSTARTTFSTART Si tratta dello stato durante un'esecuzione non iniziale del pacchetto di aggiornamento Trickle-Feed, dopo la chiamata dell'operazione GetProcessingRange all'attività di controllo 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.

Indica che un'esecuzione CDC normale è stata avviata in maniera pulita, ma non è stata o non è ancora,terminata (MarkProcessedRange).This indicates that a regular CDC run is started but has not finished or has not yet finished, cleanly (MarkProcessedRange).
TFREDO (Reprocessing Trickle-Feed Updates)TFREDO (Reprocessing Trickle-Feed Updates) Si tratta dello stato di GetProcessingRange che si verifica dopo TFSTART.This is the state on a GetProcessingRange that occurs after TFSTART. Indica che l'esecuzione precedente non è stata completata correttamente.This indicates that the previous run did not complete successfully.

Se si utilizza la colonna $reprocessing, viene impostato su 1 per indicare che a livello di destinazione è possibile che le righe siano già in corso di rielaborazione.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 Il gruppo CDC si trova in uno stato ERROR.The CDC group is in an ERROR state.

Di seguito sono riportati esempi di valori della variabile di stato CDC.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/

Per definire una variabile di stato CDCTo define a CDC state variable

  1. In SQL Server Data ToolsSQL Server Data Toolsaprire il pacchetto di SQL Server 2017 Integration Services (SSIS)SQL Server 2017 Integration Services (SSIS) contenente il flusso CDC in cui è necessario definire la variabile.In SQL Server Data ToolsSQL 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. Fare clic sulla scheda Esplora pacchetti e aggiungere una nuova variabile.Click the Package Explorer tab, and add a new variable.

  3. Assegnare un nome alla variabile in modo da poterla riconoscere come variabile di stato.Give the variable a name that you can recognize as your state variable.

  4. Assegnare alla variabile un tipo di dati String .Give the variable a String data type.

    Non assegnare alla variabile un valore come parte della definizione.Do not give the variable a value as part of its definition. Il valore deve essere impostato tramite l'attività di controllo CDC.The value must be set by the CDC Control task.

    Se si intende utilizzare l'attività di controllo CDC con Automatic State Persistence, la variabile di stato CDC verrà letta dalla tabella degli stati del database specificata e verrà riaggiornata nella stessa tabella quando cambia il relativo valore.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. Per ulteriori informazioni sulla tabella degli stati, vedere CDC Control Taske CDC Control Task Editor.For more information about the State table, see CDC Control Taskand CDC Control Task Editor.

    Se non si utilizza l'attività di controllo CDC con Automatic State Persistence, è necessario caricare il valore della variabile dall'archivio permanente in cui sono stati salvati i relativi valori all'ultima esecuzione del pacchetto e riscriverlo nell'archivio permanente in cui è stata completata l'elaborazione dell'intervallo di elaborazione corrente.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.

Vedere ancheSee Also

Attività di controllo CDC CDC Control Task
Editor attività controllo CDCCDC Control Task Editor