Aplicar as alterações no destino
Aplica-se a: SQL Server SSIS Integration Runtime no Azure Data Factory
No fluxo de dados de um pacote do Integration Services que executa uma carga incremental de dados de alteração, a terceira e a última tarefa servem para aplicar as alterações no seu destino. Você precisará de um componente para aplicar inserções, um para aplicar atualizações e um para aplicar exclusões.
Observação
A segunda tarefa no desenvolvimento do fluxo de dados de um pacote que realiza uma carga incremental de dados de alteração serve para separar inserções, atualizações e exclusões. Para obter mais informações sobre este componente, consulte Processar inserções, atualizações e exclusões. Para obter uma descrição do processo geral para criar um pacote que realiza uma carga incremental de dados de alteração, confira Captura de Dados de Alterações (SSIS).
Aplicando inserções
Para aplicar inserções, você usa um destino OLE DB, pois as linhas novas não requerem nenhuma manipulação especial.
Para processar inserções usando um destino OLE DB
Na guia Fluxo de Dados , adicione um destino OLE DB.
Conecte a saída que contém inserções da transformação de Divisão Condicional para o destino de OLE DB.
No Editor de Destino de OLE DB, na página Gerenciador de Conexões , selecione as seguintes opções:
Selecione ou crie um Gerenciador de Conexões de OLE DB para o banco de dados de destino.
Selecione uma opção Modo de acesso dos dados e selecione a tabela de destino ou digite uma instrução SQL que contenha as colunas de destino.
Na página Mapeamentos do editor, mapeie as colunas apropriadas a partir dos dados de alteração para a tabela de destino.
Aplicando atualizações
Para aplicar atualizações, você usa uma transformação de Comando do OLE DB. Você usa essa transformação porque tem que usar uma instrução UPDATE com parâmetros para atualizar uma linha por vez com novos valores de coluna.
Observação
Também é possível usar componentes de destino para aplicar atualizações. Ao usar esse método, você usa os componentes de destino para salvar as linhas em tabelas temporárias criadas para essa finalidade. Em seguida, você usa tarefas Executar SQL para realizar operações de atualização em massa e exclusão em massa no destino a partir das tabelas temporárias.
Para processar atualizações usando uma transformação de Comando OLE DB
Na guia Fluxo de Dados , adicione uma transformação de Comando OLE DB.
Conecte a saída que contém atualizações a partir da transformação de Divisão Condicional para a transformação de Comando OLE DB.
Em Editor Avançado para o Comando OLE DB, no Gerenciador de Conexões selecione ou crie um gerenciador de conexões OLE DB para o banco de dados de destino.
No Editor Avançado para o Comando OLE DB, na guia Propriedades do Componente , para SqlCommand, digite uma instrução UPDATE com parâmetros.
Por exemplo, uma instrução UPDATE para uma tabela Cliente poderia ter a sintaxe seguinte:
update CDCSample.Customer set TerritoryID = ?, CustomerType = ?, rowguid = ?, ModifiedDate = ? where CustomerID = ?
Na página Mapeamentos de Coluna do editor, mapeie as colunas apropriadas a partir dos dados de alteração até os parâmetros na instrução UPDATE.
Aplicando exclusões
Para aplicar exclusões, você usa uma transformação de Comando OLE DB. Você usa essa transformação porque tem que usar uma instrução DELETE com parâmetros para excluir uma única linha por vez com base no valor da coluna que identifica com exclusividade a linha.
Observação
Também é possível usar componentes de destino para aplicar exclusões. Ao usar esse método, você usa os componentes de destino para salvar as linhas em tabelas temporárias criadas para essa finalidade. Em seguida, você usa tarefas Executar SQL para realizar operações de atualização em massa e exclusão em massa no destino a partir das tabelas temporárias.
Para processar exclusões usando uma transformação de Comando OLE DB
Na guia Fluxo de Dados , adicione uma transformação de Comando OLE DB ao fluxo de dados.
Conecte a saída que contém exclusões a partir da transformação de Divisão Condicional para a transformação de Comando OLE DB.
Abra o Editor Avançado para configurar a transformação.
Em Editor Avançado para o Comando OLE DB, no Gerenciador de Conexões selecione ou crie um gerenciador de conexões OLE DB para o banco de dados de destino.
No Editor Avançado para o Comando OLE DB, na guia Propriedades do Componente do editor, para SqlCommand, digite uma instrução DELETE com parâmetros.
Por exemplo, uma instrução DELETE para uma tabela Cliente poderia ter a sintaxe seguinte:
delete from Customer where CustomerID = ?
Na guia Mapeamentos de Coluna do editor, mapeie a coluna apropriada a partir dos dados de alteração até o parâmetro na instrução DELETE.
Aperfeiçoando inserções e atualizações usando a funcionalidade MERGE
É possível otimizar o processamento de inserções e atualizações combinando determinadas opções de captura de dados de alteração com o uso da palavra-chave Transact-SQL MERGE. Para obter mais informações sobre a palavra-chave MERGE, confira MERGE (Transact-SQL).
Na instrução Transact-SQL que recupera os dados de alteração, é possível especificar all with merge como o valor do parâmetro row_filter_option ao chamar a função cdc.fn_cdc_get_net_changes_<capture_instance>. Essa função de captura de dados de alteração opera com mais eficiência quando não tem que realizar o processamento extra, necessário para distinguir inserções de atualizações. Ao especificar o valor do parâmetro all with merge , o valor de __$operation dos dados de alteração é 1 para exclusões ou 5 para alterações causadas por inserções ou atualizações. Para obter mais informações sobre a função Transact-SQL usada para recuperar os dados de alteração, consulte Recuperar e compreender os dados de alteração. Após recuperar as alterações com o valor de parâmetro all with merge , é possível aplicar exclusões e enviar as linhas restantes para uma tabela temporária ou uma tabela de preparo. Em seguida, em uma tarefa Executar SQL de downstream, é possível usar uma única instrução MERGE para aplicar todas as inserções ou atualizações da tabela de preparo para o destino.