Definir uma variável de estado
Aplica-se a: SQL Server SSIS Integration Runtime no Azure Data Factory
Importante
Os componentes de fluxo do CDC, incluindo a tarefa de controle de CDC, a fonte de CDC e o divisor de CDC, estão obsoletos. Para obter detalhes, consulte o comunicado.
Este procedimento descreve como definir uma variável de pacote onde o estado CDC é armazenado.
A variável de estado CDC é carregada, inicializada e atualizada pela tarefa Controle de CDC e é usada pelo componente de fluxo de dados de Origem CDC para determinar o intervalo de processamento atual para alterar registros. A variável de estado CDC pode ser definida em qualquer contêiner comum à tarefa de Controle de CDC e à origem CDC. Isso pode estar no nível do pacote, mas também pode estar em outros contêineres, como um contêiner de loop.
Modificar manualmente o valor da variável de estado CDC não é recomendado, no entanto, pode ser útil para entender seu conteúdo.
A tabela a seguir fornece uma descrição de alto nível dos componentes do valor da variável de estado CDC.
Componente | Descrição |
---|---|
<state-name> | Este é o nome do estado CDC atual. |
CS | Isso marca o ponto inicial do intervalo de processamento atual (Início atual). |
<cs-lsn> | Este é último LSN (número de sequência de log) processado na execução CDC anterior. |
CE | Isso marca o ponto final do intervalo de processamento atual (Término atual). A presença do componente de término atual no estado CDC é uma indicação de que ou um pacote CDC está atualmente em processamento ou um pacote de CDC falhou antes de processar completamente seu intervalo de processamento CDC. |
<ce-lsn> | Este é o último LSN a ser processado na execução CDC atual. É sempre assumido que o último número de sequência a ser processado é o máximo (0xFFF...). |
IR | Isso marca o intervalo de processamento inicial. |
<ir-start> | Este é o LSN de uma alteração imediatamente antes de a carga inicial ter sido iniciada. |
<ir-end> | Este é o LSN de uma alteração imediatamente depois de a carga inicial ter sido terminada. |
TS | Isso marca o carimbo de data/hora para a última atualização do estado CDC. |
<timestamp> | Essa é uma representação decimal da propriedade System.DateTime.UtcNow de 64 bits. |
ER | Isso aparece quando a última operação falhou e inclui uma descrição breve da causa do erro. Se esse componente estiver presente, ela será sempre o último. |
<short-error-text> | Essa é a descrição curta do erro. |
Os LSNs e os números de sequência são codificados como uma cadeia de caracteres hexadecimal de até 20 dígitos que representam o valor LSN do binário (10).
A tabela a seguir descreve os valores de estado CDC possíveis.
Estado | Descrição |
---|---|
(INITIAL) | Esse é o estado inicial antes de qualquer pacote ser executado no grupo CDC atual. Este também é o estado quando o estado de CDC está vazio. |
ILSTART (Initial Load Started) | Esse é o estado do início do pacote de carga inicial, depois da chamada da operação de MarkInitialLoadStart para a tarefa Controle CDC. |
ILEND (Initial Load Ended) | Esse é o estado do término bem-sucedido do pacote de carga inicial, depois da chamada da operação de MarkInitialLoadEnd para a tarefa Controle CDC. |
ILUPDATE (Initial Load Update) | Este é o estado nas execuções do pacote de atualização trickle feed depois da carga inicial, enquanto ainda processa o intervalo de processamento inicial. Isto ocorre depois da chamada da operação GetProcessingRange para a tarefa Controle CDC. Se estiver usando a coluna __$reprocessing, ela será definida como 1 para indicar que o pacote pode estar reprocessando linhas que já estão no destino. |
TFEND (Trickle-Feed Update Ended) | Este é o estado esperado para execuções regulares de CDC. Ele indica que a execução anterior foi concluída com êxito e que uma nova execução com um novo intervalo de processamento pode ser iniciada. |
TFSTART | Esse é o estado em uma execução não inicial do pacote de atualização de fluxo lento, após a chamada de operação GetProcessingRange para a tarefa Controle CDC. Isso indica que uma execução regular do CDC foi iniciada, mas não foi concluída ou ainda não foi concluída, de forma limpa (MarkProcessedRange). |
TFREDO (Reprocessing Trickle-Feed Updates) | Este é o estado em um GetProcessingRange que ocorre depois de TFSTART. Isso indica que a execução anterior não foi concluída com êxito. Se estiver usando a coluna __$reprocessing, ela será definida como 1 para indicar que o pacote pode estar reprocessando linhas que já estão no destino. |
ERROR | O grupo de CDC está em um estado de ERROR. |
Os seguintes são exemplos de valores de variável de estado 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/
Para definir uma variável de estado CDC
No SQL Server Data Tools, abra o pacote SSIS (SQL Server 2019 Integration Services) que tem o fluxo de CDC onde você precisa definir a variável.
Selecione a guia Explorador de Pacotes e adicione uma nova variável.
Dê a variável um nome que você possa reconhecer como sua variável de estado.
Atribua à variável um tipo de dados String .
Não dê à variável um valor como parte de sua definição. O valor deve ser definido pela tarefa Controle de CDC.
Se você planeja usar a tarefa Controle de CDC com Persistência Automática de Estado, a variável de Estado de CDC é lida da tabela de estado do banco de dados especificada e é atualizada de volta para a mesma tabela quando seu valor é alterado. Para obter mais informações sobre a tabela Estado, consulte Tarefa de Controle de CDC e Editor de Tarefa de Controle de CDC.
Se você não estiver usando a tarefa Controle CDC com Persistência Automática de Estado, deverá carregar o valor da variável do armazenamento persistente em que seu valor foi salvo na última vez que o pacote foi executado e gravá-lo de volta no armazenamento persistente quando o processamento do intervalo de processamento atual for concluído.