Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
SSIS Integration Runtime no Azure Data Factory
Importante
Os Componentes de Fluxo do CDC, incluindo CDC Control Task, CDC Source e CDC Splitter, foram preteridos. Para obter detalhes, consulte o comunicado.
A tarefa Controle de CDC é usada para controlar o ciclo de vida de pacotes de captura de dados de alterações (CDC). Ela gerencia a sincronização dos pacotes CDC com o pacote de carregamento inicial, bem como o gerenciamento dos intervalos de LSN (número de sequência de log) processados durante a execução de um pacote CDC. Além disso, a tarefa de controle de CDC lida com cenários de erro e recuperação.
A tarefa Controle CDC mantém o estado do pacote CDC em uma variável de pacote do SSIS e também pode persisti-lo em uma tabela de banco de dados, para que o estado seja mantido entre execuções do pacote e entre vários pacotes que, em conjunto, executam um processo CDC comum (por exemplo, uma tarefa pode ser responsável pela carga inicial e a outra pelas atualizações incrementais).
A tarefa de controle do CDC oferece suporte a dois grupos de operações. Um grupo cuida da sincronização da carga inicial e do processamento de alterações, e o outro gerencia o intervalo de LSNs para processamento de alterações durante uma execução de um pacote CDC e acompanha o que foi processado com êxito.
As operações a seguir lidam com a sincronização da carga inicial e o processamento de alterações:
| Operação | Descrição |
|---|---|
| ResetCdcState | Esta operação é usada para reiniciar o estado de CDC persistente associado ao contexto de CDC atual. Depois que esta operação for executada, o LSN máximo atual da tabela LSN-timestamp sys.fn_cdc_get_max_lsn passa a ser o início do próximo intervalo de processamento. Esta operação exige uma conexão com o banco de dados de origem. |
| MarkInitialLoadStart | Esta operação é usada no começo de um pacote da carga inicial para registrar o LSN atual no banco de dados de origem antes de o pacote da carga inicial começar a ler as tabelas de origem. Isso exige uma conexão com o banco de dados de origem para chamar sys.fn_cdc_get_max_lsn.Se você selecionar MarkInitialLoadStart ao trabalhar no SQL Server CDC (ou seja, não no Oracle), o usuário especificado no gerenciador de conexões deverá ser db_owner ou sysadmin. |
| MarkInitialLoadEnd | A operação é usada no início de um pacote da carga inicial para registrar o LSN atual no banco de dados de origem depois de o pacote da carga inicial terminar de ler as tabelas de origem. Este LSN é determinado pela gravação da hora atual quando esta operação ocorreu e, em seguida, consultando a tabela de mapeamento cdc.lsn_time_no banco de dados CDC, procurando uma alteração que ocorreu depois daquele momentoSe você selecionar MarkInitialLoadEnd ao trabalhar no SQL Server CDC (ou seja, não no Oracle), o usuário especificado no gerenciador de conexões deverá ser db_owner ou sysadmin. |
| MarkCdcStart | Esta operação é usada quando a carga inicial é feita de um banco de dados de instantâneo. Nesse caso, o processamento de alteração deve ser iniciado imediatamente depois do LSN do instantâneo. Você pode especificar o nome do banco de dados de snapshot a ser usado, e a tarefa CDC Control consulta o SQL Server para obter o LSN do snapshot. Você também tem a opção de especificar diretamente o LSN do snapshot. Se você selecionar MarkCdcStart ao trabalhar no SQL Server CDC (ou seja, não no Oracle), o usuário especificado no gerenciador de conexões deverá ser db_owner ou sysadmin. |
As operações seguintes são usadas para gerenciar o intervalo de processamento:
| Operação | Descrição |
|---|---|
| ObterIntervaloDeProcessamento | Esta operação é usada antes da chamada ao fluxo de dados que usa o fluxo de dados de Origem CDC. Ele estabelece um intervalo de LSNs que o fluxo de dados de origem de CDC lê quando é invocado. O intervalo é armazenado em uma variável de pacote SSIS que é usada pela Origem de CDC durante o processamento de fluxo de dados. Para obter mais informações sobre os estados armazenados, consulte Definir uma variável de estado. |
| MarkProcessedRange | : Esta operação é executada depois de cada execução de CDC (depois que o fluxo de dados de CDC é concluído com êxito) para registrar o último LSN que foi processado completamente na execução de CDC. Da próxima vez que o GetProcessingRange for executado, essa posição será o início do intervalo de processamento. |
Tratamento da persistência do estado do CDC
A tarefa Controle de CDC mantém um estado persistente entre ativações. As informações armazenadas no estado CDC são usadas para determinar e manter o intervalo de processamento do pacote CDC e para detectar condições de erro. O estado persistente é armazenado como uma cadeia de caracteres. Para obter mais informações, consulte Definir uma variável de estado.
A tarefa de controle de CDC suporta dois tipos de persistência de estado
Persistência de Estado Manual: nesse caso, a tarefa Controle de CDC gerencia o estado armazenado em uma variável de pacote, mas o desenvolvedor do pacote deve ler a variável de um repositório persistente antes de chamar o Controle de CDC e depois gravá-lo nesse repositório persistente após o Controle de CDC ser chamado pela última vez e a execução do CDC for concluída.
Persistência automática de estado: o estado do CDC é armazenado em uma tabela de um banco de dados. O estado é armazenado com um nome fornecido na propriedade StateName em uma tabela nomeada na propriedade Tabela a Ser Usada para Armazenar o Estado , localizada em um gerenciador de conexões selecionado para armazenar o estado. O padrão é o gerenciador de conexões de origem, mas a prática comum é usar o gerenciador de conexões de destino. A tarefa Controle de CDC atualiza o valor do estado na tabela de estado e isso é confirmado como parte da transação de ambiente.
Tratamento de erros
A tarefa de controle de CDC pode reportar um erro quando:
Falha ao ler o estado persistente do CDC ou quando a atualização do estado persistente falha.
Não lê as informações de LSN atuais do banco de dados de origem.
O estado CDC lido não é consistente.
Em todos esses casos, a tarefa Controle de CDC relata um erro que pode ser tratado do modo padrão como o SSIS trata erros de fluxo de controle.
A tarefa Controle de CDC também pode relatar um aviso quando a operação Obter Intervalo de Processamento é chamada diretamente depois de outra operação do mesmo tipo sem que Marcar Intervalo Processado seja chamada. Essa é uma indicação de que a execução anterior falhou ou que outro pacote CDC pode estar sendo executado com o mesmo nome do estado CDC.
Configurando a tarefa de controle de CDC
Você pode definir as propriedades por meio do Designer SSIS ou programaticamente.
Nesta seção
Tarefas Relacionadas
Definir uma variável de estado
CDC Control Task Editor
Use a caixa de diálogo Editor da tarefa Controle CDC para configurar a tarefa Controle CDC. A configuração da tarefa de controle do CDC inclui a definição de uma conexão com o banco de dados do CDC, a operação da tarefa do CDC e as informações de gerenciamento de estado.
Para obter mais informações sobre a tarefa CDC Control Task, consulte CDC Control Task.
Para abrir o Editor de tarefas do CDC Control
No SQL Server Data Tools, abra o pacote SQL Server 2019 Integration Services (SSIS) que tem a origem CDC.
Na guia Fluxo de Controle, clique duas vezes na tarefa CDC Control.
Opções
Gerenciador de conexões ADO.NET do banco de dados SQL Server CDC
Selecione na lista um gerenciador de conexões existente ou clique em Novo para criar uma nova conexão. A conexão deve ser a um banco de dados do SQL Server que está habilitado para CDC e onde a tabela de alteração selecionada está localizada.
Operação de Controle CDC
Selecione a operação a ser executada para esta tarefa. Todas as operações usam a variável de estado que está armazenada em uma variável de pacote SSIS que armazena o estado e passa isto entre os diferentes componentes no pacote.
Marcar início da carga inicial: esta operação é usada ao executar uma carga inicial de um banco de dados ativo sem um instantâneo. Ela é invocada no começo de um pacote da carga inicial para registrar o LSN atual no banco de dados de origem antes de o pacote da carga inicial começar a ler as tabelas de origem. Isto exige uma conexão com o banco de dados de origem.
Se você selecionar Marcar Início da Carga Inicial ao trabalhar no SQL Server CDC (ou seja, não Oracle), o usuário especificado no gerenciador de conexões deverá ser db_owner ou sysadmin.
Marcar fim da carga inicial: esta operação é usada ao executar uma carga inicial de um banco de dados ativo sem um instantâneo. Ela é invocada no início de um pacote da carga inicial para registrar o LSN atual no banco de dados de origem depois de o pacote da carga inicial terminar de ler as tabelas de origem. Esse LSN é determinado registrando a hora atual em que essa operação ocorreu e consultando a tabela de mapeamento
cdc.lsn_time_no banco de dados CDC procurando uma alteração que ocorreu após esse períodoSe você selecionar Marcar Início da Carga Inicial ao trabalhar no SQL Server CDC (ou seja, não Oracle), o usuário especificado no gerenciador de conexões deverá ser db_owner ou sysadmin.
Marcar início do CDC: esta operação é usada quando a carga inicial é feita de um banco de dados de instantâneo ou de um banco de dados fechado para novas sessões. Ele é invocado em qualquer ponto dentro do pacote de carga inicial. A operação aceita um parâmetro que pode ser um LSN instantâneo, um nome de um banco de dados de instantâneo (do qual o LSN instantâneo será derivado automaticamente) ou pode ser deixado vazio e, nesse caso, o LSN do banco de dados atual será usado como o LSN inicial para o pacote de processamento de alteração.
Esta operação é usada em vez das operações Marcar início/fim da carga inicial.
Se você selecionar Mark CDC Start ao trabalhar no SQL Server CDC (ou seja, não no Oracle), o usuário especificado no gerenciador de conexões deverá ser db_owner ou sysadmin.
Obter intervalo de processamento: esta operação é usada em um pacote de processamento de alteração antes de invocar o fluxo de dados que usa o fluxo de dados de Origem de CDC. Ele estabelece um intervalo de LSNs que o fluxo de dados de origem de CDC lê quando é invocado. O intervalo é armazenado em uma variável de pacote SSIS que é usada pela Origem de CDC durante o processamento de fluxo de dados.
Para obter mais informações sobre os possíveis estados de CDC que estão armazenados, consulte Definir uma variável de estado.
Marcar o intervalo processado: esta operação é usada em um pacote de processamento de alteração no fim de uma execução de CDC (depois que o fluxo de dados de CDC é concluído com êxito) para registrar o último LSN que foi processado completamente na execução de CDC. Da próxima vez que o
GetProcessingRangeé executado, esta posição determina o início do próximo intervalo de processamento.Reiniciar estado de CDC: esta operação é usada para reiniciar o estado de CDC persistente associado ao contexto de CDC atual. Depois que esta operação for executada, o LSN máximo atual da tabela LSN-timestamp
sys.fn_cdc_get_max_lsnpassa a ser o início do próximo intervalo de processamento. Esta operação exige uma conexão com o banco de dados de origem.Um exemplo de quando esta operação é usada é quando você deseja processar somente os registros de alteração recém-criados e ignorar todos os registros de alteração antigos.
Variável contendo o estado de CDC
Selecione a variável de pacote SSIS que armazena as informações do estado para a operação de tarefa. Você deve definir uma variável antes de começar. Se você selecionar Persistência de estado automática, a variável de estado será carregada e salva automaticamente.
Para obter mais informações sobre como definir a variável de estado, consulte Definir uma variável de estado.
LSN do SQL Server para começar o nome do CDC/instantâneo:
Digite o LSN de banco de dados de origem atual ou o nome do banco de dados de instantâneo do qual a carga inicial é realizada para determinar onde o CDC inicia. Isto só estará disponível se a Operação de controle de CDC estiver definida como Marcar início de CDC.
Para obter mais informações sobre essas operações, consulte CDC Control Task.
Armazene o estado automaticamente em uma tabela de banco de dados
Marque esta caixa de seleção para que a tarefa CDC Control gerencie automaticamente o carregamento e o armazenamento do estado do CDC em uma tabela de estado contida no banco de dados especificado. Quando não estiver selecionado, o desenvolvedor deverá carregar o Estado de CDC quando o pacote iniciar e salvá-lo sempre que o Estado de CDC for alterado.
Gerenciador de conexões para o banco de dados onde o estado está armazenado
Selecione na lista um gerenciador de conexões ADO.NET existente ou clique em Novo para criar uma nova conexão. Esta conexão é para um banco de dados do SQL Server que contém a tabela de Estado. A tabela de Estado contém as informações do estado.
Isto só estará disponível se Persistência de estado automática estiver selecionada e for um parâmetro necessário.
Tabela para usar para armazenar estado
Digite o nome da tabela de estado a ser usada para armazenar o estado CDC. A tabela especificada deve ter duas colunas chamadas nome e estado e ambas as colunas devem ser do tipo de dados varchar (256).
Você poderá opcionalmente selecionar Novo para obter um script SQL que cria uma nova tabela de estado com as colunas necessárias. Quando Persistência de estado automática estiver selecionada, o desenvolvedor deverá criar uma tabela de estado de acordo com os requisitos listados acima.
Isto só estará disponível se Persistência de estado automática estiver selecionada e for um parâmetro necessário.
Nome do estado
Digite um nome para associar ao estado persistente do CDC. A carga cheia e os pacotes CDC que funcionam com o mesmo contexto de CDC especificará um nome de estado comum. Esse nome é usado para localizar a linha correspondente ao estado na tabela de estados.