Compartilhar via


Definir uma variável de estado

Aplica-se a: Tempo de execução de integração do SSIS do SQL Server 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

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

  2. Selecione a guia Explorador de Pacotes e adicione uma nova variável.

  3. Dê a variável um nome que você possa reconhecer como sua variável de estado.

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

Confira também

Tarefa Controle de CDC
Editor da Tarefa Controle de CDC