Componentes de fluxo CDC
se aplica a:SQL Server SSIS Integration Runtime no 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.
Os Change Data Capture Components by Attunity for Microsoft SQL Server 2019 Integration Services (SSIS) ajudam os desenvolvedores do SSIS a trabalhar com o CDC e a reduzir a complexidade dos pacotes CDC.
Os componentes CDC do SSIS são projetados para funcionar com o recurso CDC do SQL Server em que as tabelas de origem são o mesmo banco de dados SQL Server ou um banco de dados Oracle (ao usar o Serviço Oracle CDC para SQL Server). Tabelas particionadas são suportadas.
Os componentes incluem componentes Control e Data Flow que simplificam a experiência de leitura e processamento de dados de alteração em pacotes SSIS. Os componentes podem ser adicionados à biblioteca de componentes no Microsoft SQL Server, mas são instalados separadamente.
Os seguintes são os componentes de Change Data Capture da Attunity:
CDC Control Flow Component:
CDC Data Flow Components:
Instalação
Esta seção descreve os procedimentos de instalação para os componentes CDC para Microsoft SQL Server 2019 Integration Services (SSIS).
Os componentes CDC para SSIS são fornecidos com o Microsoft Change Data Capture Designer e o Service for Oracle da Attunity for SQL Server. Este download faz parte do SQL Server Feature Pack. Baixe componentes do Feature Pack da página da Web SQL Server 2016 Feature Pack.
Suporte de versão
Suporte à versão do SQL Server
Os componentes CDC para SSIS são suportados em todas as versões suportadas do Microsoft SQL Server. Atualmente, as versões com suporte do SQL Server incluem o SQL Server 2012 até o SQL Server 2017.
Suporte à versão do sistema operacional
Os componentes CDC para SSIS são suportados 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 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 ter certeza de que os componentes funcionam corretamente ao desenvolver pacotes no SQL SQL Server Data Tools.
Uma mensagem é exibida depois de instalar os componentes. Clique Sim quando lhe for solicitado.
Desinstalando os componentes do Microsoft CDC
Pode desinstalar a fonte CDC, o divisor CDC ou a tarefa de controlo CDC, usando o assistente de desinstalação. Se você estiver usando o SQL Server SQL Server Data Tools para desenvolvimento de pacotes, verifique se o SQL Server Data Tools está fechado antes de executar o assistente de desinstalação.
Benefícios
Os componentes do CDC Components for SQL Server Integration Services permitem que os desenvolvedores do SSIS criem facilmente pacotes SSIS que processam dados de alteração. Esses componentes aumentam a capacidade dos desenvolvedores do SSIS de lidar com o CDC e reduzem a complexidade dos pacotes CDC.
Os componentes CDC do SSIS são utilizados para disponibilizar dados de alteração de uma forma que facilita o seu processamento para replicação, carregamento de data warehouses, atualização de dimensões de mudança lenta para OLAP, auditoria de alterações ou para outros usos adicionais possíveis. O tipo de processamento adicional usado é determinado pelo desenvolvedor do SSIS.
Os componentes CDC do SSIS são projetados para trabalhar com o recurso CDC do SQL Server 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 CDC típico processa alterações em um grupo de tabelas. A parte básica do fluxo de controle desse tipo de pacote CDC é mostrada na figura a seguir. Este pacote é chamado de pacote de processamento de alimentação por gotejamento.
Este Fluxo de Controle do SQL Server Integration Services contém duas Tarefas de Controle CDC e a tarefa Fluxo de Dados. A primeira tarefa chamada Get CDC Processing Range estabelece o intervalo LSN para as alterações processadas na tarefa de fluxo de dados chamada Process Changes. Esse intervalo é estabelecido com base no que foi processado durante a última execução do pacote e foi salvo em um armazenamento persistente.
Para obter mais informações sobre o uso da Tarefa de Controle CDC, consulte a Tarefa de Controle CDC e o Editor de Tarefa de Controle CDC .
A figura a seguir mostra o Process Changes fluxo de dados, que conceitualmente mostra como as alterações são processos.
As etapas ilustradas nesta figura são:
Alterações na Tabela X é uma fonte CDC que lê as alterações efetuadas na tabela X, realizadas no intervalo de processamento CDC definido no fluxo de controlo principal.
CDC Splitter X é usado para dividir as alterações em inserções, exclusões e atualizações. Nesse cenário, supõe-se que a fonte CDC está configurada para produzir alterações de rede para que diferentes tipos de alteração possam ser processados em paralelo.
As alterações específicas são depois processadas a jusante. 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 Fonte do CDC, consulte:
Editor de código-fonte CDC (página do Gerenciador de Conexões)
Editor de código-fonte CDC (página Colunas)
Editor de código-fonte CDC (página de saída de erro)
Para obter mais informações sobre o CDC Splitter, consulte:
Uma das questões básicas que exigem atenção ao criar pacotes CDC é como o processamento de alterações interage com o carregamento inicial (ou processamento inicial) dos dados.
Os componentes CDC suportam três cenários distintos de carregamento inicial e processamento de alterações:
Carga inicial feita com um instantâneo do banco de dados. Neste caso, o processamento de alterações começa com o LSN do evento de instantâneo.
Carregamento inicial a partir de uma base de dados quiescente. Nesse caso, nenhuma alteração é feita durante o carregamento inicial, de modo que o LSN atual é amostrado em algum momento durante o carregamento inicial e o processamento de alterações começa com esse LSN.
Carregamento inicial de um banco de dados ativo. Neste caso, como a carga inicial está em andamento, as alterações são feitas no banco de dados e não há um único LSN a partir do qual o processamento de alterações possa ser iniciado com precisão. Nesse caso, o desenvolvedor do pacote de carga inicial pode obter uma amostra do LSN atual do banco de dados de origem antes e depois da carga inicial. Em seguida, ao processar alterações, deve-se ter cuidado ao processar alterações feitas em paralelo com a carga inicial, pois algumas das alterações processadas já são vistas na carga inicial (por exemplo, uma alteração Inserir pode falhar com um erro de chave duplicada porque a linha inserida foi lida pelo processo de carregamento inicial).
A figura a seguir mostra um pacote SSIS que pode lidar com os dois primeiros cenários:
A figura a seguir mostra um pacote SSIS que poderia lidar com o terceiro cenário:
Após o pacote de carregamento inicial, um pacote de atualização de alimentação por gotejamento é executado repetidamente de acordo com um cronograma para processar as alterações à medida que elas ficam disponíveis para consumo.
A passagem do estado do processamento CDC do pacote de carga inicial para o pacote de alimentação por gotejamento 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 dessa variável é chamado de estado CDC, que reflete o estado atual do processamento CDC para os grupos de tabelas que estão sendo manipulados pelos pacotes iniciais de carga e alimentação contínua.
O valor da variável Estado CDC precisa ser mantido no armazenamento persistente. Ele deve ser lido antes de iniciar o processamento CDC e deve ser salvo com o estado atual após a conclusão do processamento. A tarefa de carregar e armazenar o estado CDC pode ser manipulada pelo desenvolvedor do SSIS, mas o componente Controle CDC pode automatizar essa tarefa mantendo o valor do Estado CDC em uma tabela de banco de dados.
Considerações de segurança
Esta seção lista algumas considerações de segurança relacionadas ao uso dos componentes CDC no SSIS.
Autorização de acesso para alterar dados
Os pacotes de atualização Trickle-feed precisam de acesso às funções CDC do SQL Server. Esse acesso é concedido, por padrão, aos membros da função de banco de dados fixa db_owner. Como o db_owner é uma função poderosa, ao definir instâncias de captura no SQL Server, é recomendável associar uma função de segurança de seleção a cada instância de captura que permita que o pacote CDC do SSIS use um usuário muito mais restrito para processar as alterações.
Acesso ao LSN Atual da Base de Dados CDC
As operações da tarefa CDC Control para marcar o início LSN para processamento de alterações devem ser capazes de encontrar o LSN atual do CDC Database. Os componentes localizam o LSN usando o procedimento sp_replincrementlsn do banco de dados mestre. A permissão de execução neste procedimento deve ser dada ao logon usado para se conectar ao banco de dados CDC do SQL Server.
Acesso à Tabela de Estados CDC
A tabela CDC States é usada para a persistência automática dos Estados CDC que precisam ser atualizáveis 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 SQL Server como um usuário autorizado a criar bancos de dados do SQL Server e executar tarefas administrativas e de manutenção. Além disso, um administrador de sistema do SQL Server que trabalha com bancos de dados habilitados para CDC deve ter conhecimento sobre a tecnologia e a implementação do CDC do SQL Server.
Agrupando tabelas para processamento CDC
Os projetos de banco de dados variam em tamanho de várias tabelas a muitos milhares de tabelas. Ao projetar pacotes de carga inicial e CDC, é benéfico agrupar tabelas em grupos muito menores para facilitar o gerenciamento e a eficiência. Esta seção lista várias considerações que afetam a classificação de tabelas em pequenos grupos, onde as tabelas em cada uma são inicialmente carregadas e, em seguida, atualizadas como um grupo.
Os padrões CDC suportados pelos componentes CDC assumem que este agrupamento já está 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 alimentação por gotejamento. As atualizações de alimentação por gotejamento são programadas para execuções periódicas com base na taxa de restrições de processamento de alterações (por exemplo, consumo de CPU e E/S, impacto em outros sistemas) e na latência desejada.
As tabelas são agrupadas com base nas seguintes considerações:
De acordo com a base 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 diferentes grupos CDC.
As tabelas relacionadas com restrições de integridade referencial devem ser atribuídas ao mesmo grupo para evitar problemas de integridade referencial no alvo.
As tabelas para as quais a latência mais alta pode ser tolerada podem ser agrupadas para que possam ser processadas com menos frequência e reduzir a carga geral do sistema.
As tabelas para as quais existe uma taxa de variação mais elevada devem ser agrupadas em grupos mais pequenos, e as tabelas com uma taxa de variação baixa podem ser agrupadas em grupos maiores.
Os dois pacotes a seguir são criados para cada grupo 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 de alimentação gradual que lê as alterações feitas nas tabelas de origem e aplica as alterações às tabelas de destino. Este pacote deve ser executado regularmente de forma programada.
Estado do CDC
Cada grupo 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 Tarefa de controle CDC. A tabela a seguir mostra os possíveis valores de estado CDC.
Estado | Descrição |
---|---|
0-(INICIAL) | O estado que existe antes de qualquer pacote ser executado no grupo CDC atual. Isto também acontece quando o estado do CDC está vazio. Para obter mais informações sobre as operações da tarefa CDC Control, consulte CDC Control Task. |
1-ILSTART (inicial-Load-Started) | Este é o estado que existe quando o pacote de carga inicial é iniciado. Isso ocorre após a operação de chamada MarkInitialLoadStart para a tarefa CDC Control. Para obter mais informações sobre as operações da tarefa CDC Control, consulte CDC Control Task. |
2- ILEND (Inicial-Load-Ended) | Este é o estado que existe quando o pacote de carregamento inicial termina com êxito. Isso ocorre após a chamada da operação MarkInitialLoadEnd para a tarefa CDC Control. Para obter mais informações sobre as operações da tarefa de controlo do CDC, consulte CDC Control Task. |
3: ILUPDATE (Atualização de carga inicial) | Este é o estado que existe após a primeira execução do pacote de atualização após o carregamento inicial enquanto ainda processa o intervalo de processamento inicial. Isso ocorre após a chamada à operação GetProcessingRange da tarefa de controlo CDC. Se estiver a usar a coluna _$reprocessing, ela será configurada para 1 para indicar que o pacote pode estar a reprocessar linhas já processadas no destino. Para obter mais informações sobre as operações da tarefa CDC Control, consulte CDC Control Task. |
4-TFEND (Trickle-Feed-Update-Ended) | 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. |
5-TFSTART (Trickle-Feed-Update-Started) | Este é o estado que existe em execuções subsequentes do pacote Update após a chamada de operação GetProcessingRange para a tarefa de controle CDC. Isso indica que uma execução CDC regular 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 CDC Control Task. |
6-TFREDO (Reprocessamento-Gotejamento-Feed-Updates) | Este é o estado de um GetProcessingRange que ocorre após TFSTART. Isso 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. |
7-ERRO | O grupo CDC está num estado de ERRO. |
Aqui está o diagrama de estado para os componentes CDC. Um estado de ERRO é atingido quando se chega a um estado que não é esperado. Os estados esperados sã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 como ILEND, se o estado for TFSTART, o grupo CDC estará em um estado de erro e o pacote Trickle-Feed Update não será executado (o pacote de Carregamento Inicial será executado).
Quando o pacote de Carregamento Inicial é executado com êxito, o pacote de Atualização do Trickle-Feed é executado repetidamente sob um cronograma predeterminado para processar alterações nas tabelas de origem. Cada execução do pacote Trickle-Feed Update é uma execução CDC.
Nesta secção
Tarefas relacionadas
Conteúdo relacionado
Artigo técnico, Instalação do Microsoft SQL Server 2012 Change Data Capture para Oracle utilizando Attunity, em social.technet.microsoft.com.
Artigo técnico, Solucionar problemas de configuração no Microsoft Change Data Capture for Oracle pela Attunity, em social.technet.microsoft.com.
Artigo técnico, Solucionar erros de instância CDC no Microsoft Change Data Capture for Oracle pela Attunity, em social.technet.microsoft.com.
Vídeo, CDC para bases de dados Oracle usando o SQL Server Integration Services 2012 (video do SQL Server), no technet.microsoft.com.