web-dev-qa-db-fra.com

La colonne SSIS ne peut pas convertir entre les types de données de chaîne unicode et non unicode

Je transfère une table de SQL Server vers PDA Server. Voici mon flux de données:

ADO NET Source ---> OLE DB Destination

Toutes les colonnes de ma table source sont des varchars et donc lorsque j'ai créé ma table de destination, je me suis assuré qu'elles avaient les mêmes types de données. Les deux tables ont donc des types de données varchar pour toutes les colonnes.

Cependant, je reçois toujours l'erreur: la colonne "col1" ne peut pas convertir entre les types de données de chaîne unicode et non-unicode. La chose étrange est que si je remplace ma OLE DB Destination par une ADO Net Destination, cela semble fonctionner cependant, je veux utiliser OLE DB afin que je puisse spécifier des choses telles que des lignes par lot.

Quelqu'un peut-il aider?

2
tee

Double-cliquez sur la ligne entre la source et la destination et sélectionnez l'onglet Métadonnées. Cela répertoriera toutes vos colonnes et les types de données que SSIS a déduits.

Je comparerais cela à votre source et m'assurerais à 100% qu'ils s'alignent.

Ce qui peut arriver, c'est que la première fois que vous avez créé votre flux de données, SSIS définira les métadonnées en fonction des types à ce stade. col1 est interprété comme étant nvarchar, il sera donc défini comme DT_WSTR d'une certaine longueur.

Le temps passe et vous mettez à jour la requête et la source est maintenant varchar, mais toujours appelée col1. Un varchar s'insérera toujours dans un nvarchar donc la forme de cette colonne n'a pas "changé" donc SSIS n'a pas besoin de refaire ses internes.

S'il est vrai que SSIS s'accroche aux anciennes métadonnées, mon chemin de clic est de

  1. Copiez la requête existante
  2. Changer ma requête en SELECT 1 as TotallyNewAndUniqueColumn
  3. SSIS signalera ensuite que toutes mes métadonnées sont hors de contrôle et je voudrais les corriger automatiquement, et je clique sur Oui
  4. Ré-collez la requête d'origine et voilà, les métadonnées actuelles sont capturées.
3
billinkc