Partager via


Résoudre les problèmes liés à la ressource de capture de données modifiées dans Azure Data Factory

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article fournit des suggestions sur la façon de résoudre les problèmes courants liés à la ressource de capture de données modifiées dans Azure Data Factory.

Problème : Problème d’activation de la capture de données modifiées native dans ma source SQL.

Pour les sources dans SQL, deux ensembles de tables sont disponibles : les tables avec capture de données SQL native activée et les tables avec des colonnes incrémentielles basées sur le temps.

Procédez comme suit pour configurer la capture de données modifiées native pour une table source spécifique dans votre base de données SQL.

Considérez que vous avez le tableau suivant, avec l’ID comme clé primaire. Si une clé primaire est présente dans le schéma, supports_net_changes a la valeur true par défaut. Si ce n’est pas le cas, configurez-le à l’aide du script dans la requête 3.

Requête 1


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

Notes

Actuellement, la ressource CDC ADF charge uniquement les modifications nettes pour les opérations d’insertion, de mise à jour et de suppression.

Pour activer la capture de données modifiées au niveau de la base de données, exécutez la requête suivante :

Requête 2

EXEC sys.sp_cdc_enable_db

Pour activer la capture de données modifiées au niveau de la table, exécutez la requête suivante :

Requête 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';

Problème : les tables ne peuvent pas être sélectionnées dans le processus de configuration des ressources CDC.

Si votre source SQL n’a pas SQL Server CDC avec net_changed activée ou n’a pas de colonnes incrémentielles basées sur le temps, les tables de votre source ne seront pas sélectionnées.

Problème : le cluster de débogage n’est pas disponible à partir d’un pool chaud.

Le cluster de débogage n’est pas disponible à partir d’un pool chaud. Il y aura un temps d’attente de l’ordre de 1 minute et plus.

Problème : Problème lors du suivi des opérations de suppression.

Actuellement, la ressource CDC prend en charge les opérations de suppression pour les types de récepteurs suivants : Azure SQL Database &Delta. Pour ce faire, dans la page de mappage de colonnes, sélectionnez la colonne clés qui peut être utilisée pour déterminer si une ligne de la source correspond à une ligne du récepteur. 

Problème : ma ressource CDC échoue lorsque la table SQL cible contient des colonnes d’identité.

L’obtention de l’erreur suivante lors de l’exécution d’un CDC lorsque votre table récepteur cible a des colonnes d’identité,

Impossible d’insérer une valeur explicite dans la colonne identité de la table « TableName » quand la valeur d’IDENTITY_INSERT est OFF.

Exécutez la requête suivante pour déterminer si votre cible basée sur SQL contient une colonne d’identité.

Requête 4 :

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

Pour résoudre ce problème, l’utilisateur peut suivre l’une de ces étapes :

  1. Réglez IDENTITY_INSERT sur ON en exécutant la requête suivante au niveau de la base de données, puis réexécutez le mappeur CDC

Requête 5 :

SET IDENTITY_INSERT dbo.TableName ON; 

(Ou)

  1. L’utilisateur peut supprimer la colonne d’identité spécifique du mappage lors des insertions.

Problème : Difficulté à utiliser le runtime d’intégration auto-hébergé.

Actuellement, le runtime d’intégration auto-hébergé n’est pas pris en charge dans la ressource CDC. Si vous essayez de vous connecter à une source locale, utilisez le runtime d’intégration Azure avec un réseau virtuel managé.