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é

34
demandé sur Andrew 2013-03-21 16:28:20

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...

50
répondu user3459499 2014-03-25 11:49:19

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!

31
répondu amar_soni 2016-12-13 10:09:25
  1. tout d'Abord, ajouter un bloc de conversion dans votre diagramme de flux de données.

  2. 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.

  3. allez au bloc destination. Allez à mappage en lui et mappez l'élément nouvellement créé à son adresse correspondante et enregistrez.

  4. 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).

11
répondu Sanket Nalavade 2015-06-11 06:05:20

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.

3
répondu user3350868 2017-10-09 10:05:08

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 dateCAST(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:

  1. faites un clic droit sur votre OLE DB Source étape et ouvrir l'éditeur avancé.
  2. Aller à l'Entrée et la Sortie des Propriétés
  3. Sélectionner Des Colonnes De Sortie
  4. Sélectionnez votre colonne
  5. dans la section Propriétés des types de données, changer le type de données en chaîne [DT_STR]
  6. 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.

Source

3
répondu Stefan 2017-11-08 13:38:47

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!

1
répondu Theo 2017-01-19 13:52:27

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

1
répondu Ahmed Noman 2017-07-31 20:57:26

La pièce manquante est ici Data Conversion objet. Il doit se trouver entre la Source OLE DB et l'objet Destination.

enter image description here

1
répondu Serge Voloshenko 2018-03-02 23:38:51