Compartilhar via


Definir uma variável de estado

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 pode estar também em outros contêineres, como um contêiner de loop.

A modificação manual do valor da variável de estado CDC não é recomendável, no entanto, isso 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 presumimos 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 ter sido executado no grupo de 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 já 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

Este é o estado em uma execução não inicial do pacote de atualização trickle feed depois que a operação GetProcessingRange chama a tarefa Controle CDC.

Isto indica que uma execução CDC regular foi iniciada, mas não foi concluída ou ainda não foi concluída completamente (MarkProcessedRange).

TFREDO (Reprocessing Trickle-Feed Updates)

Este é o estado em um GetProcessingRange que ocorre depois de TFSTART. Isto 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 já 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 SQL Server 2012 Integration Services (SSIS) que tem o fluxo de CDC onde você precisa definir a variável.

  2. Clique na 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ê estiver planejando usar a tarefa Controle de CDC com Persistência de Estado Automática, a variável de Estado CDC será lida a partir da tabela de estado de banco de dados especificada e será atualizada para a mesma tabela quando seu valor for alterado. Para obter mais informações sobre a tabela de Estado, consulte Tarefa Controle de CDCe Editor da tarefa Controle CDC.

Se você não estiver usando a tarefa de Controle CDC com a Persistência de Estado Automática, deverá carregar o valor da variável a partir do repositório persistente em que seu valor foi salvo da última vez que o pacote foi executado e gravá-la no repositório persistente quando o processamento do intervalo atual for concluído.

Consulte também

Referência

Editor da tarefa Controle CDC

Conceitos

Tarefa Controle de CDC