CORRECTIF : Message d’erreur lorsque vous exécutez un package SQL Server 2005, SQL Server 2008 ou SQL Server 2008 R2 Integration Services (SSIS) après avoir installé le.NET Framework 2.0 SP2 ou.NET Framework 3.5 SP1 : « ADO NET Source [1424] »

S’applique à : Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

Microsoft distribue Microsoft SQL Server 2008, Microsoft SQL Server 2005 et les correctifs de Microsoft SQL Server 2008 R2 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente SQL Server 2005, Microsoft SQL Server 2008 ou SQL Server 2008 R2 version du correctif.

Symptômes


Considérez le scénario suivant :
  • Vous exécutez un package de Microsoft SQL Server 2005, Microsoft SQL Server 2008 ou SQL Server 2008 R2 Integration Services (SSIS) sur un ordinateur qui a l’une des installations de.NET Framework suivantes :
    • Le.NET Framework 2.0 Service Pack 2 (SP2)
    • Le.NET Framework 3.5 Service Pack 1 (SP1)
  • Le package SSIS utilise un pilote ODBC tiers qui importe des données de type caractère.
Toutefois, lorsque vous exécutez le package SSIS, vous recevez des messages d’erreur suivants :
[ADO NET Source [1424]] Erreur : Code d’erreur SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Le « composant ADO NET » Source « (1424) » a échoué, car le code d’erreur 0x80131937 s’est produite et la disposition de la ligne erreur sur « colonne de sortie « columnname » (nombre) » indique un échec sur erreur. Une erreur s’est produite sur l’objet spécifié du composant spécifié. Il peut y avoir des messages d’erreur validées avant cela avec plus d’informations sur l’échec.

Erreur 0xc0209029 : Data Flow Task : le « composant «NomComposant» (1) » a échoué, car le code d’erreur 0x80131937 s’est produite en cours...

[ADO NET Source [1424]] Erreur : Le composant ADO NET » Source « (1424) n’a pas pu traiter les données. Composant de pipeline a retourné le code d’erreur HRESULT 0xC0209029 à partir d’un appel de méthode.

[SSIS. Erreur de pipeline] : Code d’erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput composant « Source de NET ADO » (1424) retourné code d’erreur 0xC02090F5. Le composant a renvoyé un code d’erreur de lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d’erreur est définie par le composant, mais l’erreur est fatale, et le pipeline ont arrêté leur exécution. Il peut y avoir des messages d’erreur validées avant cela avec plus d’informations sur l’échec.
Ce problème concerne les pilotes ODBC qui sont accessibles à partir du fournisseur ODBC managé lorsque les conditions suivantes sont remplies :
  • La fonction de ExecuteReader est appelée par le paramètre CommandBehavior.SequentialAccess . Cet appel et le paramètre sont utilisées dans les circonstances suivantes :
    • Lorsqu’un package SQL Server 2005 SSIS lit les données d’une source de DataReader ou lorsqu’un package SSIS de SQL Server 2008 lit les données à partir d’une source de données ADO.NET gérée.
    • La source de données n’est pas configurée pour rediriger les erreurs et les valeurs.
  • La fonction OdbcDataReader.IsDbNull est appelée. Le package SSIS utilise cette méthode pour déterminer si la valeur d’un champ est NULL ou non.
  • Une des fonctions suivantes est appelée :
    • La fonction OdbcDataReader.GetBytes est appelée pour obtenir certains types de données, comme DT_BYTES, à partir du fournisseur ODBC managé.
    • La fonction OdbcDataReader.GetChars est appelée pour obtenir certains types de données chaîne, comme DT_WSTR, le fournisseur managé ODBC.

Cause


Le.NET Framework 2.0 SP2 et.NET Framework 3.5 SP1 introduisent une modification dans le fournisseur ODBC managé par laquelle les chaînes sont lus à partir du pilote ODBC natif dans le scénario décrit dans la section « Symptômes ». En raison de cette modification, le fournisseur managé ODBC qui est appelé dans le pilote ODBC natif à l’aide de la fonction d’API de SQLGetData utilise une mémoire tampon de taille 0. Pilotes compatibles ODBC n’ont pas de problèmes dans cet appel. Toutefois, les pilotes ODBC non conformes peuvent échouer dans ces circonstances. Pour un pilote ODBC conforme, la fonction SQLGetData API renvoie SUCCESS_WITH_INFO lorsqu’une mémoire tampon de taille 0 est détecté. Pour un pilote ODBC non conforme, l’appel renvoie NO_DATA.

Résolution


Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.

Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n'apparaît pas, contactez le Service clientèle et Support de Microsoft pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l’adresse suivante :Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.

Conditions préalables

Vous devez disposer de.NET Framework 2.0 Service Pack 2 installé.

Informations sur le redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce correctif.

Informations concernant le Registre

Vous n’êtes pas obligé de modifier le Registre.

Informations sur les fichiers de correctif logiciel

Ce correctif contient uniquement les fichiers qui sont nécessaires pour corriger les problèmes décrits dans cet article. Ce correctif peut ne pas contienne tous les fichiers nécessaires à la mise à jour complète d’un produit vers la dernière version. Version l’anglaise de ce correctif possède les attributs de fichier (ou ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et heure dans le panneau de configuration.
2.0 de.NET Framework pour Windows 2000, Windows Server 2003, Windows XP, versions 32 bits
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
System.data.dll2.0.50727.40632,933,76019-05:08x86
2.0 de.NET Framework pour Windows 2000, Windows Server 2003, Windows XP, x64 les versions
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
System.data.dll2.0.50727.40633,008,51218-23:51x64
System.data.dll2.0.50727.40632,933,76019-05:08x86
2.0 de.NET Framework pour Windows 2000, Windows Server 2003, les versions de Windows XP, IA-64
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
System.data.dll2.0.50727.40632,933,76019-05:08x86
System.data.dll2.0.50727.40633,234,81619-01:09IA-64
2.0 de.NET Framework pour les versions 32 bits de Windows Vista, Windows Server 2008,
Nom de fichierVersion de fichierTaille du fichierDateHeure
System.data.dll2.0.50727.44002,933,76010-Sep-200911:54
2.0 de.NET Framework pour Windows Vista, Windows Server 2008, x64 les versions
Nom de fichierVersion de fichierTaille du fichierDateHeure
System.data.dll2.0.50727.44003,008,51210-Sep-200911:54
2.0 de.NET Framework pour Windows Vista, Windows Server 2008, versions IA-64
Nom de fichierVersion de fichierTaille du fichierDateHeure
System.data.dll2.0.50727.44003,234,81610-Sep-200911:54

Solution de contournement


Pour contourner ce problème, appliquez l’une des méthodes suivantes.

Méthode 1

Modifier le package SSIS pour configurer l’erreur et Redirection de troncation sur la source DataReader ou sur la source de données ADO.NET gérée. Après avoir modifié le package SSIS pour rediriger la sortie d’erreur à une destination, le package s’exécute avec succès même si aucune ligne n’est écrite dans la destination. Pour ce faire, procédez comme suit.

Remarque Les étapes suivantes supposent que vous utilisez un package SQL Server 2005 SSIS qui lit des données à partir d’une source de DataReader.
  1. Ouvrez le package SSIS dans SQL Server Business Intelligence Development Studio.
  2. Ouvrez la boîte de dialogue Éditeur avancé pour la DataReader Source dans le Concepteur de flux de données.
  3. Cliquez sur l’onglet entrée de propriétés et de sortie et puis développez le nœud de Sortie de DataReader dans l’arborescence d’entrées et sorties .
  4. Développez le nœud Colonnes de sortie .
  5. Cliquez sur chaque colonne sous le nœud de Colonnes de sortie et examiner la propriété type de données . Pour chaque colonne dont la propriété type de données DT_WSTR, DT_NTEXT, DT_BYTES ou DT_IMAGE, modifiez les deux propriétés suivantes :
    • La propriété ErrorRowDisposition la valeur RD_RedirectRow.
    • Propriété de TruncationRowDisposition la valeur RD_RedirectRow.
  6. Cliquez sur OK pour enregistrer les modifications.
  7. Dans le Concepteur de flux de données, ajoutez une nouvelle destination. Par exemple, ajouter une destination de fichier plat ou une destination de SQL Server.

  8. Utilisez la flèche rouge à partir de la source DataReader pour le connecter à la destination nouvellement ajoutée. Cette opération vous dirige les lignes d’erreur et les lignes de troncation à la destination pour enregistrer les lignes d’erreur.

  9. Répétez les étapes 1 à 8 pour toutes les tâches de flux de données que les colonnes accès ODBC chaîne ou l’image et qui échouent avec les messages d’erreur mentionnés dans la section « Symptômes ».

Méthode 2

Désinstaller le Service Pack 2 de.NET Framework 2.0 ou.NET Framework 3.5 SP1. Toutefois, nous ne recommandons pas désinstaller un service pack, car cela se fait au détriment la fiabilité, les améliorations de fonctionnalité et que le service pack offre des optimisations de performances.



Pour restaurer votre système à l’état où elle était avant l’installation du.NET Framework 2.0 SP2 ou.NET Framework 3.5 SP1, procédez comme suit :
  1. Dans le panneau de configuration, double-cliquez sur Ajout / Suppression de programmes.
  2. Recherchez Microsoft.NET Framework 3.5 SP1 et puis désinstallez-le.
  3. Recherchez Microsoft.NET Framework 3.0 SP2 et puis désinstallez-le.
  4. Recherchez Microsoft.NET Framework 2.0 SP2 et puis désinstallez-le.
  5. Réinstallez la version d’origine de.NET Framework 3.5. Cette étape va réinstaller le.NET Framework 2.0 SP1 et.NET Framework 3.0 SP1. Pour obtenir le 3.5 de.NET Framework, visitez le site Web de Microsoft à l’adresse suivante :

Méthode 3

Contactez le fournisseur du pilote ODBC tiers pour déterminer si le fournisseur a une mise à jour du pilote résoudre ce problème.

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».