Impossible de créer un object IDataAdapter. Ce fournisseur n'est peut-être pas entièrement pris en charge avec la tâche d'exécution SQL

J'ai exécuté une requête simple dans une tâche SQL d'exécution –

SELECT col1, col2 from thetable where code = ? order by id asc 

Exec sql task – Le paramètre de connection ADO.NET "code" est un int32 dans SSIS et int32 dans le mappage des parameters de la tâche exec sql.

Cela fonctionne très bien dans SQL Server, mais dans SSIS il provoque l'erreur –

[Exécution d'une tâche SQL] Erreur: L'exécution de la requête "SELECT col1, col2 de thet …" a échoué avec l'erreur suivante: "Impossible de créer un object IDataAdapter Ce fournisseur n'est peut-être pas entièrement pris en charge avec la tâche d'exécution SQL. 'Syntaxe incorrecte près de'? '.'. ". Raisons d'échec possibles: Problèmes avec la requête, propriété "ResultSet" non définie correctement, parameters non définis correctement ou connection non établie correctement.

Comment réparer cette erreur?

ADO.NET utilise une syntaxe différente (@) pour les parameters – Mapper les parameters de requête aux variables dans une tâche SQL d'exécution

Vous utilisez ? en tant que marqueur de paramètre, qui fonctionne pour OleDb et ADO, mais pas pour ADO.NET. Essayez de replace ? avec @code et, dans votre mappage de parameters, changez le nom du paramètre en @code:

 SELECT col1, col2 from thetable where code = @code order by id asc 

entrez la description de l'image ici