Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
SSIS Integration Runtime em Azure Data Factory
Importante
Os componentes de fluxo CDC, incluindo CDC Control Task, CDC Source e CDC Splitter, foram preteridos. Para obter detalhes, consulte o anúncio.
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 de Controlo CDC e é usada pelo componente de fluxo de dados de origem CDC para determinar o intervalo de processamento atual para registos de alteração. A variável de estado CDC pode ser definida em qualquer contentor comum à tarefa de Controlo CDC e à fonte CDC. Isto pode ser ao nível do pacote, mas também pode ocorrer noutros contentores, como um contentor loop.
Modificar manualmente o valor da variável de estado do CDC não é recomendado, no entanto pode ser útil para compreender o seu conteúdo.
A tabela seguinte fornece uma descrição de alto nível dos componentes do valor da variável de estado CDC.
| Componente | Description |
|---|---|
| <Nome do Estado> | Este é o nome do atual estado do CDC. |
| CS | Isto marca o ponto de início da faixa de processamento atual (Início Atual). |
| <CS-LSN> | Este é o último LSN (Número de Sequência de Log) processado na execução anterior do CDC. |
| CE | Isto marca o ponto final do intervalo de processamento atual (Fim Atual). A presença do componente CE no estado CDC indica que ou um pacote CDC está atualmente em processamento ou que um pacote CDC falhou antes de processar totalmente o seu alcance de processamento CDC. |
| <CE-LSN> | Este é o último LSN a ser processado na atual Corrida do CDC. Assume-se sempre que o último número de sequência a ser processado é o máximo (0xFFF...). |
| IR | Isto marca o intervalo inicial de processamento. |
| <ir-start> | Este é um LSN de uma alteração pouco antes do início da carga inicial. |
| <ir-end> | Este é um LSN de uma alteração imediatamente após o fim da carga inicial. |
| TS | Isto marca o carimbo temporal da última atualização estadual do CDC. |
| <Carimbo temporal> | Esta é uma representação decimal da propriedade System.DateTime.UtcNow de 64 bits. |
| ER | Isto aparece quando a última operação falhou e inclui uma breve descrição da causa do erro. Se este componente estiver presente, aparecerá sempre por último. |
| <texto de erro curto> | Esta é a descrição curta do erro. |
Os LSNs e números de sequência são codificados cada um como uma cadeia hexadecimal de até 20 dígitos representando o valor LSN de Binary(10).
A tabela seguinte descreve os possíveis valores de estado do CDC.
| Estado | Description |
|---|---|
| (INICIAL) | Este é o estado inicial antes de qualquer pacote ser executado no grupo atual do CDC. Isto também acontece quando o estado do CDC está vazio. |
| ILSTART (Carregamento Inicial Iniciado) | Este é o estado em que o pacote de carregamento inicial começa, após a chamada de operação MarkInitialLoadStart para a tarefa de Controlo CDC. |
| ILEND (Carga Inicial Terminada) | Este é o estado em que o pacote de carregamento inicial termina com sucesso, após a chamada de operação MarkInitialLoadEnd para a tarefa de Controlo CDC. |
| ILUPDATE (Atualização de Carregamento Inicial) | Este é o estado nas execuções do pacote de atualização de fluxo de gotejamento após a carga inicial, enquanto ainda se processa o intervalo inicial de processamento. Isto ocorre após a chamada de operação GetProcessingRange para a tarefa de Controlo do CDC. Se usar a coluna __$reprocessing, está definida para 1 para indicar que o pacote pode estar a reprocessar linhas já no destino. |
| TFEND (AtualizaçãoTrickle-Feed Terminada) | Este é o estado esperado para as corridas regulares do 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 numa execução não inicial do pacote de atualização do feed de goteo, após a chamada de operação GetProcessingRange para a tarefa de Controlo do CDC. Isto indica que uma corrida regular do CDC foi iniciada mas não terminou ou ainda não terminou, de forma limpa (MarkProcessedRange). |
| TFREDO (Reprocessamento Trickle-Feed Atualizações) | Este é o estado de um GetProcessingRange que ocorre após TFSTART. Isto indica que a corrida anterior não foi concluída com sucesso. Se usar a coluna __$reprocessing, está definida para 1 para indicar que o pacote pode estar a reprocessar linhas já no destino. |
| ERROR | O grupo CDC está num estado de ERRO. |
Seguem-se exemplos de valores de variáveis 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 SQL Server 2019 Integration Services (SSIS) que tem o fluxo CDC onde precisa de definir a variável.
Selecione o separador Explorador de Pacotes e adicione uma nova variável.
Dá à variável um nome que consigas reconhecer como a tua variável de estado.
Dê à variável um tipo de dado String .
Não dê um valor à variável como parte da sua definição. O valor deve ser definido pela tarefa de Controlo do CDC.
Se planeia usar a tarefa de Controlo CDC com Persistência Automática de Estado, a variável de Estado CDC é lida da tabela de estados da base de dados que especifica e é atualizada de volta para essa mesma tabela quando o seu valor muda. Para mais informações sobre a tabela de Estados, consulte Tarefa de Controlo CDC e Editor de Tarefas de Controlo CDC.
Se não estiver a usar a tarefa CDC Control com Persistência Automática de Estados, então deve carregar o valor da variável do armazenamento persistente onde o seu valor foi guardado na última execução do pacote e escrevê-lo novamente no armazenamento persistente quando o processamento do intervalo de processamento atual estiver concluído.