Compartilhar via


Definir uma variável de estado

Este procedimento descreve como definir uma variável de pacote em que o estado CDC é armazenado.

A variável de estado do CDC é carregada, inicializada e atualizada pela tarefa de controle do CDC e é usada pelo componente de fluxo de dados da fonte CDC para determinar o intervalo de processamento atual para registros de alteração. A variável de estado CDC pode ser definida em qualquer contêiner comum à tarefa de controle 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.

Não é recomendável modificar manualmente o valor da variável de estado CDC, no entanto, pode ser útil 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> Esse é o nome do estado CDC atual.
CS Isso marca o ponto de partida do intervalo de processamento atual (Início Atual).
<cs-lsn> Este é o último Log Sequence Number (LSN), número de sequência de log, processado na execução anterior do CDC.
CE Isso marca o ponto de extremidade do intervalo de processamento atual (Fim Atual). A presença do componente CE no estado CDC é uma indicação de que um pacote CDC está sendo processado no momento ou que um pacote CDC falhou antes de processar totalmente seu intervalo de processamento CDC.
<ce-lsn> Este é o último LSN a ser processado na execução do CDC atual. Sempre se supõe que o último número de sequência a ser processado seja o máximo (0xFFF...).
IR Isso marca o intervalo de processamento inicial.
<ir-start> Este é um LSN referente a uma mudança que ocorreu pouco antes do início da carga inicial.
<ir-end> Esse é um LSN de uma alteração logo após o término da carga inicial.
TS Isso marca o registro de data e hora da última atualização de estado do CDC.
<timestamp> Esta é uma representação decimal da propriedade System.DateTime.UtcNow de 64 bits.
ER Isso aparece quando a última operação falhou e inclui uma breve descrição da causa do erro. Se esse componente estiver presente, ele sempre aparecerá por último.
<short-error-text> Esta é 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 de Binary(10).

A tabela a seguir descreve os possíveis valores de estado CDC.

Estado Descrição
(INICIAL) 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 (Carga Inicial Iniciada) Esse é o estado quando o pacote de carga inicial é iniciado, após a chamada de MarkInitialLoadStart operação para a tarefa controle CDC.
ILEND (carga inicial encerrada) Esse é o estado quando o pacote de carga inicial termina com êxito, após a chamada de operação da tarefa de controle CDC MarkInitialLoadEnd.
ILUPDATE (Atualização de Carga Inicial) Esse é o estado nas execuções do pacote de atualização do feed de fluxo após a carga inicial, enquanto ainda processa o intervalo de processamento inicial. Isso ocorre após a chamada de operação GetProcessingRange para a tarefa de controle do CDC.

Se estiver usando a coluna de reprocessamento __$, ela será definida como 1 para indicar que o pacote pode estar reprocessando linhas já no destino.
TFEND (Trickle-Feed atualização encerrada) 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 ao realizar uma execução subsequente do pacote de atualização de alimentação gradativa, após a chamada de operação GetProcessingRange para a tarefa de Controle CDC.

Isso indica que uma execução regular do CDC foi iniciada, mas ainda não terminou ou ainda não terminou de maneira limpa (MarkProcessedRange).
TFREDO (Reprocessando atualizações de Trickle-Feed) Esse é o estado de um GetProcessingRange que ocorre após o TFSTART. Isto indica que a execução anterior não foi concluída com êxito.

Se estiver usando a coluna de reprocessamento __$, ela será definida como 1 para indicar que o pacote pode estar reprocessando linhas já no destino.
ERRO O grupo de CDC está em um estado de ERROR.

Veja a seguir 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 2014 Integration Services) que tem o fluxo CDC em que você precisa definir a variável.

  2. Clique na guia Gerenciador de Pacotes e adicione uma nova variável.

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

  4. Dê à 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 de controle do CDC.

Se você planeja usar a tarefa controle CDC com persistência automática de estado, a variável de estado CDC será lida da tabela de estado do banco de dados especificada e será atualizada de volta para a mesma tabela quando seu valor for alterado. Para obter mais informações sobre a tabela Estado, consulte a Tarefa de Controle CDC e o Editor de Tarefas de Controle CDC.

Se você não estiver usando a tarefa de controle CDC com persistência automática de estado, deverá carregar o valor da variável a partir do armazenamento persistente onde ele foi salvo pela última vez que o pacote foi executado. Em seguida, escreva-o de volta no armazenamento persistente quando o processamento do intervalo atual for concluído.

Consulte Também

Tarefa Controle de CDC
Editor da Tarefa Controle de CDC