Risolvere i problemi relativi alla risorsa Change Data Capture in Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo fornisce suggerimenti su come risolvere i problemi comuni relativi alla risorsa Change Data Capture in Azure Data Factory.

Problema: problemi durante l'abilitazione di CDC nativo nell'origine SQL.

Per le origini in SQL sono disponibili due set di tabelle: tabelle con SQL CDC nativo abilitato e tabelle con colonne incrementali basate sul tempo.

Seguire questa procedura per configurare CDC nativo per una tabella di origine specifica nel database SQL.

Si consideri la tabella seguente, con ID come chiave primaria. Se nello schema è presente una chiave primaria, supports_net_changes è impostato su true per impostazione predefinita. In caso contrario, configurarlo usando lo script in Query 3.

Query 1


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

Nota

Attualmente la risorsa ADF CDC carica solo le modifiche nette per le operazioni di inserimento, aggiornamento ed eliminazione.

Per abilitare CDC a livello di database, eseguire la query seguente:

Query 2

EXEC sys.sp_cdc_enable_db

Per abilitare CDC a livello di tabella, eseguire la query seguente:

Query 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: le tabelle non sono disponibili per la selezione nel processo di configurazione delle risorse CDC.

Se l'origine SQL non dispone di SQL Server CDC con net_changed abilitata o non dispone di colonne incrementali basate sul tempo, le tabelle nell'origine non saranno disponibili per la selezione.

Problema: il cluster di debug non è disponibile da un pool ad accesso frequente.

Il cluster di debug non è disponibile da un pool ad accesso frequente. Ci sarà un tempo di attesa nell'ordine di 1+ minuti.

Problema: problemi durante il rilevamento delle operazioni di eliminazione.

Attualmente la risorsa CDC supporta operazioni di eliminazione per i tipi di sink seguenti: database SQL di Azure e Delta. Per ottenere questo risultato nella pagina di mapping delle colonne, selezionare la colonna chiavi che può essere usata per determinare se una riga dall'origine corrisponde a una riga dal sink. 

Problema: la risorsa CDC ha esito negativo quando la tabella SQL di destinazione contiene colonne Identity.

Viene visualizzato l'errore seguente durante l'esecuzione di un cdc quando la tabella sink di destinazione include colonne Identity.

Impossibile inserire un valore esplicito per la colonna Identity nella tabella 'TableName' quando IDENTITY_INedizione Standard RT è impostato su OFF.

Eseguire la query seguente per determinare se si dispone di una colonna Identity nella destinazione basata su SQL.

Query 4

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

Per risolvere il problema, l'utente può seguire una di queste operazioni:

  1. Impostare IDENTITY_INedizione Standard RT su ON eseguendo la query seguente a livello di database ed eseguire di nuovo CDC Mapper

Query 5

SET IDENTITY_INSERT dbo.TableName ON; 

(Or)

  1. L'utente può rimuovere la colonna Identity specifica dal mapping durante l'esecuzione di inserimenti.

Problema: problemi durante l'uso del runtime di integrazione self-hosted.

Attualmente, il runtime di integrazione self-hosted non è supportato nella risorsa CDC. Se si tenta di connettersi a un'origine locale, usare il runtime di integrazione di Azure con la rete virtuale gestita.