web-dev-qa-db-fra.com

Paquet SSIS: conversion entre les types de données de chaîne unicode et non unicode

Je me connecte à une base de données Oracle et la connexion fonctionne, mais l'erreur suivante s'affiche pour certaines des colonnes:

Description: Column "RESOURCE_NAME" cannot convert between unicode 
and non-unicode string data types.

Valeur pour RESOURCE_NAME:

  • Pour Oracle: VARCHAR2(200 BYTE) 
  • Pour SQL Server: VARCHAR(200 BYTE)

Je peux me connecter à la base de données Oracle via Oracle SQL Developer sans aucun problème. De plus, j'ai le paramètre de package SSIS Run64BitRuntime = False.

4
Jeremy F.

Le type de données Oracle VARCHAR2 semble être équivalent à NVARCHAR dans SQL Server ou DT_WSTR à SSIS. Référence

Vous devrez convertir à l'aide des fonctionstransformation de conversion de données, ou CAST ou CONVERT dans SQL Server.

10
Mike Henderson

Le moyen le plus simple consiste à ouvrir le package SSIS in notepad (le fichier dtsx) et à rechercher et remplacer globalement toutes les instances de validateExternalMetadata = "True" avec validateExternalMetadata = " Faux" .

remarque: nous avons rencontré ce problème lors de la connexion à une base de données Oracle 11g sous Linux via SSIS.

2
rip747

Si le paquet fonctionne sur une machine et non sur une autre; Essayez de définir NLS_LANG sur la langue, le territoire et le jeu de caractères appropriés et testez le package.

[Command Prompt]> set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
2
Jay Akhawri

Vous pouvez utiliser la commande SQL dans SSIS et utiliser CONVERT ou CAST. Si SSIS vous donne toujours une erreur, c'est à cause des métadonnées. Voici comment vous pouvez le réparer.

  1. Ouvrez l'éditeur avancé.
  2. Sous les propriétés d'entrée et de sortie, développez la sortie source.
  3. Développer les colonnes de sortie
  4. Sélectionnez la colonne à l'origine du problème.
  5. Accédez à Propriétés du type de données et remplacez le type de données par le type souhaité: DT_STR, DT_Text, etc.
1
shockwave

sur oledb source -> options de l'éditeur avancées-> colonnes d'entrée/de sortie-> colonnes de sortie-> sélectionnez la colonne RESOURCE_NAME et modifiez le type de données comme DT_WSTR et sa longueur peut également être modifiée à votre guise

1
USER9999

Si tout a échoué d'en haut. Créez une variable de table et insérez-y les données. Sélectionnez ensuite tous les enregistrements en tant que source. utilisez SET NOCOUNT ON dans le script.

0
Amar Jyoti Lahon

Vous pouvez simplement double-cliquer sur le bloc "Conversion de données" dans le flux de données et le remplacer par: "Chaîne Unicode [DT_WSTR]"

Travaux

0
user2860427