Componentes do fluxo CDC

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.

Os componentes Change Data Capture da Attunity para o Microsoft SQL Server 2019 Integration Services (SSIS) ajudam os desenvolvedores de SSIS a trabalhar com CDC e a reduzir a complexidade dos pacotes CDC.

Os componentes CDC do SSIS foram projetados para funcionar com o recurso CDC do SQL Server, em que as tabelas de origem estão no mesmo banco de dados do SQL Server ou em um banco de dados Oracle (quando se usa o Oracle CDC Service para SQL Server). Há suporte para tabelas particionadas.

Os componentes incluem componentes de Controle e Fluxo de Dados que agilizam a experiência de ler e processar dados de alteração em pacotes de SSIS. Os componentes podem ser adicionados à biblioteca de componente no Microsoft SQL Server, mas são instalados separadamente.

Veja a seguir os componentes do Change Data Capture da Attunity:

Componente de fluxo de controle CDC:

Tarefa Controle de CDC

Componentes de fluxo de dados CDC:

Fonte CDC

CDC Splitter

Instalação

Esta seção descreve os procedimentos de instalação para os Componentes CDC para o Microsoft SSIS (SQL Server 2019 Integration Services).

Os componentes CDC para SSIS são fornecidos com o Microsoft Change Data Capture Designer and Service for Oracle, da Attunity, para SQL Server. Este download é parte do SQL Server Feature Pack. Baixe componentes do Feature Pack da página da Web do SQL Server 2016 Feature Pack.

Suporte à versão

Suporte à versão do SQL Server

Os componentes CDC para SSIS são compatíveis com todas as versões do Microsoft SQL Server com suporte. Atualmente, as versões do SQL Server com suporte incluem o SQL Server 2012 a 2017.

Suporte à versão do sistema operacional

Os componentes CDC para SSIS têm suporte nos seguintes sistemas operacionais e plataformas:

  • Windows 8 e 8.1
  • Windows 10
  • Windows Server 2012 e 2012 R2
  • Windows Server 2016

Executando o programa de instalação

Antes de executar o assistente de instalação, verifique se o SQL Server Data Tools está fechado. Em seguida, siga as instruções no assistente de instalação.

Reiniciar o serviço SSIS

Depois de instalar os componentes CDC, você deve reiniciar o serviço SSIS para verificar se os componentes funcionam corretamente ao desenvolver pacotes no SQL SQL Server Data Tools.

Uma mensagem é exibida depois de instalar os componentes. Clique em Sim quando solicitado.

Desinstalando os Componentes CDC da Microsoft

Você pode desinstalar a origem do CDC, o separador do CDC ou a tarefa de controle do CDC, usando o assistente de desinstalação. Se você estiver usando o SQL Server Data Tools para desenvolvimento de pacotes, verifique se ele está fechado antes de executar o assistente de desinstalação.

Benefícios

Os componentes CDC do SQL Server Integration Services permitem que os desenvolvedores de SSIS criem facilmente pacotes do SSIS que processam dados de alterações. Estes componentes aprimoram a capacidade de desenvolvedores de SSIS de lidarem com o CDC e reduzir a complexidade de pacotes de CDC.

Os componentes SSIS CDC são usados para fornecer os dados de alteração de uma maneira que seja fácil processá-los posteriormente para replicação, carregando um data warehouse, atualizando dimensões variáveis lentamente para OLAP, auditando alterações ou para usos adicionais possíveis. O tipo de processamento posterior usado é determinado pelo desenvolvedor do SSIS.

Os componentes do SSIS CDC são criados para funcionar com o recurso do SQL Server CDC com tabelas de alteração que estão no mesmo banco de dados do SQL Server .

Introdução aos Componentes de Captura de Dados de Alteração

Um pacote de CDC típico processa as alterações em um grupo de tabelas. A parte básica do fluxo de controle deste tipo de pacote de CDC é mostrada na figura a seguir. Este pacote é chamado de pacote de processamento de trickle feed.

Fluxo de controle do pacote de processamento em alimentação contínua

Este Fluxo de Controle do SQL Server Integration Services contém duas Tarefas de Controle do CDA e a tarefa de Fluxo de Dados. A primeira tarefa chamada Obter Intervalo de Processamento CDC estabelece o intervalo de LSN para as alterações que são processadas na tarefa de fluxo de dados chamada Processar Alterações. Este intervalo é estabelecido com base no que foi processado durante a última execução de pacote e foi salvo em um repositório persistente.

Para obter mais informações sobre como usar a tarefa Controle CDC, consulte CDC Control Task e CDC Control Task Editor.

A figura a seguir mostra o fluxo de dados de Alterações de Processo, que mostra conceitualmente como as alterações são processadas.

Fluxo de dados das alterações de processo

As etapas ilustradas nesta figura são:

  • Alterações para a Tabela X é uma fonte CDC que lê as alterações feitas na tabela X dentro do intervalo de processamento de CDC determinado pelo fluxo de controle pai.

  • O Divisor de CDC X é usado para dividir as alterações em inserções, exclusões e atualizações. Neste cenário, pressupõe-se que a fonte CDC esteja configurada para gerar alterações líquidas, para que diferentes tipos de alterações possam ser processados em paralelo.

  • As alterações específicas são então processadas posteriormente downstream. Nesta ilustração, as alterações são inseridas em tabelas usando vários Destinos ODBC, mas, em casos reais, o processamento pode ser diferente.

Para obter mais informações sobre a origem CDC, consulte:

Fonte CDC

Editor de Fonte CDC (Página do Gerenciador de Conexões)

Editor de origem do CDC (Página Colunas)

Editor da Origem CDC (Página de Saída de Erros)

Para obter mais informações sobre o CDC Splitter, consulte:

CDC Splitter

Um dos problemas básicos que exigem atenção ao criar pacotes de CDC é como o processamento de alterações interage com o carregamento inicial (ou processamento inicial) dos dados.

Os componentes do CDC dão suporte a três cenários distintos de carregamento inicial e processamento de alterações:

  • O carregamento inicial é feito com um instantâneo do banco de dados. Neste caso, o processamento das alterações se inicia com o LSN do evento de instantâneo.

  • Carregamento inicial de um banco de dados inativo. Neste caso, nenhuma alteração é feita durante o carregamento inicial, de modo que o LSN atual tem uma amostra feita em algum momento durante o carregamento inicial e o processamento de alterações inicia com esse LSN.

  • Carregamento inicial de um banco de dados ativo. Neste caso, à medida que uma carga inicial está em andamento, as alterações são feitas no banco de dados e não há nenhum LSN único do qual o processamento de alterações possa ser iniciado com precisão. Neste caso, o desenvolvedor do pacote de carga inicial pode fazer uma amostra do LSN atual do banco de dados de origem antes e depois da carga inicial. Em seguida, ao processar as alterações, é preciso ter cuidado ao processar as alterações feitas em paralelo à carga inicial já que algumas das alterações processadas já são vistas na carga inicial (por exemplo, uma alteração de Inserção pode falhar com um erro de chave duplicada porque a linha inserida foi lida pelo processo de carga inicial).

A figura a seguir mostra um pacote SSIS que poderia tratar os primeiros dois cenários:

Pacote SSIS tratando os dois primeiros cenários

A figura a seguir mostra um pacote SSIS que poderia tratar o terceiro cenário:

Pacote SSIS tratando o terceiro cenário

Após o pacote de carregamento inicial, um pacote de atualização incremental é executado repetidamente conforme uma programação para processar as alterações à medida que ficam disponíveis para uso.

A passagem do estado do processamento de CDC do pacote de carga inicial para o pacote de alimentação contínua e entre diferentes tarefas dentro de cada pacote ocorre por meio de uma variável de cadeia de caracteres especial do pacote SSIS. O valor desta variável é denominado Estado do CDC, que reflete o estado atual do processamento de CDC para os grupos de tabelas tratados pelos pacotes de carga inicial e de alimentação contínua.

O valor da variável de estado de CDC precisa ser mantido no armazenamento persistente. Ele deve ser lido antes de iniciar o processamento de CDC e deve ser salvo com o estado atual após a conclusão do processamento. A tarefa de carregar e armazenar o estado de CDC pode ser tratada pelo desenvolvedor de SSIS, mas o componente de Controle de CDC pode automatizar esta tarefa mantendo o valor do Estado de CDC em uma tabela de banco de dados.

Considerações sobre segurança

Esta seção lista algumas considerações de segurança relacionadas ao uso dos componentes de CDC no SSIS.

Autorização de acesso para alterar dados

Os pacotes de atualização trickle feed precisam de acesso às funções do SQL Server CDC. Esse acesso é concedido, por padrão, a membros da função de banco de dados fixa db_owner . Como a db_owner é uma função com privilégios elevados, ao definir instâncias de captura no SQL Server, é recomendável associar uma função de segurança de controle de acesso a cada instância de captura para permitir que o pacote SSIS CDC use um usuário muito mais restrito para processar as alterações.

Acesso ao LSN atual do banco de dados CDC

As operações da tarefa de controle de CDC para marcar o LSN inicial para o processamento de alterações devem ser capazes de encontrar o LSN atual do banco de dados CDC. Os componenes localizam o LSN usando o procedimento sp_replincrementlsn do banco de dados mestre. A permissão de execução neste procedimento deve ser concedida ao logon usado para se conectar ao banco de dados CDC do SQL Server.

Acesso à tabela de estados do CDC

A tabela de estados do CDC é usada para persistir automaticamente os estados do CDC que precisam poder ser atualizados pelo login usado para se conectar ao banco de dados CDC do SQL Server. Como esta tabela é criada pelo desenvolvedor do SSIS, defina o administrador do sistema do SQL Server como um usuário que é autorizado para criar bancos de dados do SQL Server e executar tarefas administrativas e de manutenção. Além disso, um administrador do sistema do SQL Server que trabalha com bancos de dados habilitados para CDC devem conhecer a tecnologia e a implementação do SQL Server CDC.

Agrupamento de tabelas para processamento de CDC

Projetos de banco de dados variam em tamanho de várias tabelas para muitos milhares de tabelas. Ao projetar a carga inicial e os pacotes CDC, é vantajoso agrupar as tabelas em grupos muito menores para facilitar o gerenciamento e aumentar a eficiência. Esta seção lista várias considerações que afetam a ordenação das tabelas em pequenos grupos, onde as tabelas de cada uma são inicialmente carregadas e depois atualizadas como um grupo.

Os padrões de CDC compatíveis com os componentes CDC pressupõem que esse agrupamento já esteja determinado. Cada grupo define um contexto CDC separado que é mantido separadamente de outros grupos. Para cada grupo, são criados pacotes de atualização de carga inicial e de alimentação gradual. As atualizações incrementais são programadas para serem executadas periodicamente com base na taxa de alteração, nas restrições de processamento (por exemplo, consumo de CPU e de E/S, impacto em outros sistemas) e na latência desejada.

As tabelas são agrupadas com base nas seguintes considerações:

  1. De acordo com o banco de dados de destino. Todas as tabelas que são gravadas em bancos de dados de destino diferentes ou passam por processamento diferente devem ser atribuídas a grupos de CDC diferentes.

  2. As tabelas relacionadas por restrições de integridade referencial devem ser atribuídas ao mesmo grupo para evitar problemas de integridade referencial no destino.

  3. As tabelas para as quais a latência maior pode ser tolerada podem ser agrupadas para que possam ser processadas com menos frequência e, com isso, reduzir a carga de sistema global.

  4. As tabelas para as quais há uma taxa mais alta de alteração devem estar em grupos menores e as tabelas com uma taxa baixa de alteração podem ser agrupadas em grupos maiores.

Os dois pacotes seguintes são criados para cada grupo de CDC:

  • Um pacote de carga inicial, que lê todo o intervalo de dados das tabelas de origem e o aplica às tabelas de destino.

  • Um pacote de atualização incremental que lê as alterações feitas nas tabelas de origem e aplica essas alterações às tabelas de destino. Este pacote deve ser executado regularmente, de maneira agendada.

Estado do CDC

Cada grupo de CDC tem um estado associado a ele, que é representado por uma cadeia de caracteres com um formato específico. Para obter mais informações, consulte CDC Control Task. A tabela a seguir mostra os valores possíveis de estado de CDC.

Estado Descrição
0-(INITIAL) O estado que existe antes que qualquer pacote seja executado no grupo de CDC atual. Este também é o estado quando o estado do CDC está vazio.

Para obter mais informações sobre as operações da tarefa CDC Control, consulte a CDC Control Task.
1-ILSTART (Inicial-Carga-Iniciada) Este é o estado que existe quando o pacote de carga inicial é iniciado. Isto ocorre após a chamada da operação MarkInitialLoadStart para a tarefa de controle do CDC.

Para obter mais informações sobre as operações da tarefa CDC Control, consulte a CDC Control Task.
2- ILEND (Carga Inicial Concluída) Este é o estado que existe quando o pacote de carga inicial é terminado com êxito. Isto ocorre após a chamada da operação MarkInitialLoadEnd à tarefa de controle do CDC.

Para obter mais informações sobre as operações da tarefa CDC Control, consulte a CDC Control Task.
3-ILUPDATE (atualização de carga inicial) Este é o estado em que o sistema fica após a primeira execução do pacote Update, depois do carregamento inicial, enquanto ainda está processando o intervalo inicial de processamento. Isso ocorre após a chamada à operação GetProcessingRange para a tarefa de controle do CDC.

Se estiver usando a coluna _$reprocessing , ela será definida como 1 para indicar que o pacote pode estar reprocessando linhas já no destino.

Para obter mais informações sobre as operações da tarefa CDC Control, consulte a CDC Control Task.
4-TFEND (Alimentação Gradual-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.
5-TFSTART (Atualização incremental iniciada) Este é o estado que existe nas execuções subsequentes do pacote de atualização após a chamada da operação GetProcessingRange para a tarefa de controle de CDC.

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

Para obter mais informações sobre as operações da tarefa CDC Control, consulte a CDC Control Task.
6-TFREDO (Reprocessamento-Alimentação Gotejante-Atualizações) Este é o estado em um GetProcessingRange que ocorre depois de TFSTART. Isto indica que a execução anterior não foi concluída com sucesso.

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

A seguir, veja o diagrama de estado para os componentes CDC. O estado ERROR é atingido quando se atinge um estado inesperado. Os estados esperados estão ilustrados no diagrama a seguir. No entanto o diagrama não mostra o estado ERROR.

Por exemplo, no final de um pacote de Carga Inicial, ao tentar definir o estado para ILEND, se o estado estiver em TFSTART, o grupo de CDC ficará em estado de erro e o pacote de atualização Trickle-Feed não será executado (o pacote de Carga Inicial será executado).

Diagrama de estado

Quando o pacote de Carga Inicial é executado com êxito, o pacote de Atualização Trickle Feed é executado repetidamente em uma agenda predeterminada para processar as alterações nas tabelas de origem. Cada execução do pacote de atualização Trickle-Feed Update é uma execução de CDC.

Nesta seção