Compartilhar via


Solucionar problemas do recurso de captura de dados de alterações no Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

Este artigo fornece sugestões sobre como solucionar problemas comuns com o recurso de captura de dados de alterações no Azure Data Factory.

Problema: problemas ao habilitar a CDA nativa na minha origem do SQL.

Para origens no SQL, dois conjuntos de tabelas estão disponíveis: tabelas com a CDA nativa no SQL habilitada e tabelas com colunas incrementais baseadas em tempo.

Siga estas etapas para configurar a CDA nativa para uma tabela de origem específica no banco de dados SQL.

Considere que você tem a tabela a seguir, com a ID como a Chave Primária. Se uma Chave Primária estiver presente no esquema, supports_net_changes será definido como true por padrão. Caso contrário, configure-o usando o script na Consulta 3.

Consulta 1


CREATE TABLE Persons (
	ID int,
	LastName varchar(255) NOT NULL,
	FirstName varchar(255),
	Age int,
	Last_login DATETIME,
    	PRIMARY KEY (ID));

Observação

No momento, o recurso CDA do ADF carrega apenas os itens movimentados para operações insert, update e delete.

Para habilitar a CDA no nível do banco de dados, execute a seguinte consulta:

Consulta 2

EXEC sys.sp_cdc_enable_db

Para habilitar a CDA no nível da tabela, execute a seguinte consulta:

Consulta 3

EXEC sys.sp_cdc_enable_table  
	@source_schema = N'dbo'  
	, @source_name = N'Persons'  
	, @role_name = N'cdc_admin'  
	, @supports_net_changes = 1
        , @captured_column_list = N'ID';

Problema: as tabelas não estão disponíveis para seleção no processo de configuração do recurso CDA.

Se a origem do SQL não tiver a CDA do SQL Server com net_changed habilitado ou não tiver colunas incrementais baseadas em tempo, as tabelas na sua origem ficarão indisponíveis para seleção.

Problema: o cluster de depuração não está disponível em um pool warm.

O cluster de depuração não está disponível em um pool warm. Haverá um tempo de espera na ordem de mais de 1 minuto.

Problema: problema no rastreamento de operações de exclusão.

Atualmente, o recurso CDC oferece suporte a operações de exclusão para os seguintes tipos de coletor - Banco de Dados SQL do Azure & Delta. Para isso, na página de mapeamento de coluna, selecione a coluna de chave que pode ser usada para determinar se uma linha da origem corresponde a uma linha do coletor. 

Problema: meu recurso CDC falha quando a tabela SQL de destino tem colunas de identidade.

Obter o seguinte erro ao executar um CDC quando a tabela do coletor de destino tem colunas de identidade,

Não é possível inserir um valor explícito para a coluna de identidade na tabela 'TableName' quando IDENTITY_INSERT estiver definido como OFF.

Execute a consulta a seguir para determinar se há uma coluna de identidade no destino baseado em SQL.

Consulta 4

SELECT * 
FROM sys.identity_columns 
WHERE OBJECT_NAME(object_id) = 'TableName'

Para resolver isso, o usuário pode seguir uma destas etapas:

  1. Defina IDENTITY_INSERT como ON executando a seguinte consulta no nível do banco de dados e execute novamente o CDC Mapper

Consulta 5

SET IDENTITY_INSERT dbo.TableName ON; 

(Ou)

  1. O usuário pode remover a coluna de identidade específica do mapeamento durante a execução de inserções.

Problema: dificuldades em usar o runtime de integração auto-hospedada.

Atualmente, não há suporte para o runtime de integração auto-hospedada no recurso CDC. Se estiver tentando se conectar a uma fonte local, use o runtime de integração do Azure com a rede virtual gerenciada.