Conversion SSIS entre erreur Unicode et Erreur Non Unicode
j'ai un paquet ssis où j'utilise une source OLEDB reliant la table SQL Server 2005. Toutes les colonnes sauf une colonne date sont NVARCHAR (255). J'utilise une destination Excel et j'utilise une instruction SQL pour créer la feuille dans le classeur Excel, le SQL est dans le gestionnaire de connexion excel (en fait une instruction create table qui crée une feuille) et est dérivé de la cartographie des colonnes à partir de la base de données.
peu importe ce que j'ai fait je continue d'obtenir cette unicode --> erreur de conversion non unicode entre ma source et ma destination. Essayé la conversion en chaîne[DT_STR] entre S > D, l'a enlevé, a changé la table de SQL VARCHAR en NVARCHAR et obtient toujours cette erreur flippin.
parce que je crée la feuille dans Excel avec un énoncé SQL, Je ne vois aucune façon de Pré-définir ce que seront les types de données des colonnes dans la feuille Excel. J'imagine que ce serait un défaut méta-données mais je ne sais pas.
donc entre ma table SQL destination et la création de ma feuille Excel avec cette déclaration sql SSIS Comment puis-je arrêter cette erreur?
Mon erreur est:
erreur à la tâche de flux de données [OLE DB Source [1]]: colonne "MyColumn" ne peut pas convertir entre les types de données unicode et non unicode chaîne.
et pour toutes les colonnes nvarchar.
reconnaissant de toute aide
Merci
André
8 réponses
ajouter des transformations de Conversion de données pour convertir les colonnes de chaînes de caractères non Unicode (DT_STR) en chaînes Unicode (DT_WSTR).
vous devez faire ceci pour toutes les colonnes de chaîne...
les Étapes ci-Dessous a fonctionné pour moi:
1). clic droit sur la tâche source.
2). cliquez sur "Afficher l'éditeur Avancé". option d'édition avancée pour la tâche source dans ssis
3). Allez à l'onglet" Propriétés D'entrée et de sortie".
4). sélectionnez la colonne de sortie pour laquelle vous obtenez l'erreur.
5). Son type de données sera"String[DT_STR]".
6). Changez ce type de données en"Unicode String[DT_WSTR]". Changement de le type de données pour la chaîne unicode
7). enregistrer et fermer. Espérons que cette aide!
tout d'Abord, ajouter un bloc de conversion dans votre diagramme de flux de données.
ouvrez le bloc de conversion des données et cochez la colonne pour laquelle l'erreur apparaît. Ci-dessous, changez son type de données en chaîne unicode(DT_WSTR) ou quel que soit le type de données attendu et sauvegardez.
allez au bloc destination. Allez à mappage en lui et mappez l'élément nouvellement créé à son adresse correspondante et enregistrez.
clic Droit votre projet dans l'explorateur de solutions.sélectionnez propriétés. Sélectionnez les propriétés de configuration et sélectionnez le débogage. Dans ce cas, définissez l'option Run64BitRunTime à false (car excel ne gère pas très bien l'application 64 bits).
j'ai connu cette situation lorsque J'ai installé Oracle version 12 client 32 bits client connecté à un serveur Oracle 12 tournant sous windows. Bien que les deux D'Oracle-source et SqlServer-destination ne soient pas Unicode, j'ai continué à recevoir ce message, comme si les colonnes d'oracle étaient Unicode. J'ai résolu le problème en insérant une boîte de conversion de données, et en sélectionnant le type DT-STR (pas unicode) pour les champs varchar2 et DT-WSTR (unicode) pour les champs numériques, alors j'ai fait tomber la 'copie de' de la sortie nom du champ. Notez que j'ai continué à obtenir de l'erreur car j'avais relié à la source de la boîte de flèche avec la conversion de la boîte AVANT de la conversion de types. Donc j'ai dû changer de boîte source et ça a nettoyé toutes les erreurs dans la boîte de destination.
au lieu d'ajouter un Conversion Des Données vous pouvez lancer la colonne nvarchar dans une colonne varchar. Cela vous évite d'avoir une étape inutile et a une performance plus élevée que l'alternative.
dans le select de votre instruction SQL remplacer date
CAST(date AS varchar([size]))
. Pour une raison quelconque, cela ne change pas encore le type de données de sortie. Pour ce faire, procédez de la manière suivante:
- faites un clic droit sur votre OLE DB Source étape et ouvrir l'éditeur avancé.
- Aller à l'Entrée et la Sortie des Propriétés
- Sélectionner Des Colonnes De Sortie
- Sélectionnez votre colonne
- dans la section Propriétés des types de données, changer le type de données en chaîne [DT_STR]
- changez la longueur à la longueur que vous avez spécifiée dans votre CAST déclaration
après avoir fait ceci vos données source seront sorties comme une varchar et votre erreur disparaîtra.
sur l'exemple ci-dessus j'ai continué à perdre les valeurs, je pense que retarder la Validation permettra aux nouveaux types de données d'être sauvegardés dans le cadre des méta-données.
sur le gestionnaire de connexion pour' Excel Connection Manager', définissez la Validation de retard à False à partir des propriétés.
ensuite, sur la tâche de Destination du flux de données pour Excel, définissez les métadonnées Validationexternal à False, encore une fois à partir des propriétés.
cela vous permettra maintenant de cliquer avec le bouton droit de la souris sur Excel Tâche Destination et passer à L'éditeur avancé pour destination Excel -- > onglet extrême droite-propriétés D'entrée et de sortie. Dans la section Dossiers colonnes externes, vous pouvez maintenant modifier les Types de données et les valeurs de longueur des colonnes problématiques et cela peut maintenant être sauvegardé.
Bonne Chance!
j'ai eu le même problème et j'ai essayé tout ce qui est écrit ici mais ça me donnait toujours la même erreur. Il s'est avéré être une valeur nulle dans la colonne que j'essayais de convertir.
la suppression de la valeur nulle a résolu mon problème.
Cheers, Ahmed
La pièce manquante est ici Data Conversion
objet. Il doit se trouver entre la Source OLE DB et l'objet Destination.