2017-03-27 3 views
2

Ich nehme einige einfache Daten aus einer SQL-Tabelle, mache eine kleine Umwandlung und konvertiere sie in Unicode. Dann gebe ich es in einem Oracle CHAR(1 byte) Feld auf einem Oracle-Server aus.Änderung der Typkonvertierung zwischen lokaler PC- und Serverumgebung

Dies funktioniert ohne Fehler auf meinem lokalen PC. Ich stelle dann auf dem Server und es heißt, dass

"Spalte" A "kann nicht zwischen Unicode-und Nicht-Unicode-String-Datentypen konvertieren".

Nach mehreren Dinge versuchen, ich meine Hände in die Luft warf und nahm nur aus der data conversion zu Unicode und jetzt ist es gebrochen und wird nicht auf meinem PC laufen.

ABER - es funktioniert jetzt auf dem Server und ist alle glücklich. Ich habe gesucht und gefunden, dass andere dieses Problem hatten, aber keiner scheint die Ursache zu finden und es nur auf andere Weise zu umgehen.

Warum kann ich meinen PC und meinen Server nicht gleich funktionieren lassen? Alle Tabellen und Datenverbindungen sind für beide gleich. Keine Änderung außer Ausführungsort.

Antwort

2

Ich habe das gleiche Problem in meinem SSIS-Paket und fand keine Lösung.

Es war eine einfache Daten, keine Unicode-Zeichen, und es keine Ausnahme wirft, wenn es mit einer SQL-Abfrage oder einem .net-Code konvertieren ... Aber es löst eine Ausnahme in SSIS bei der Verwendung Data Conversion Transformation

Umgehungen

habe ich eine einfache Abhilfe dies zu erreichen (Sie es, wenn dieser Fehler erneut auftritt verwenden können)

  1. Ich ersetzte die Data Conversion Komponente mit einem Script Component
  2. markierte ich die Spalten i als Eingabe für jeden im Skript konvertieren möchten
  3. Für jede Spalte möchte ich konvertiere ich eine Ausgabespalte des Typs erstellt DT_WSTR
  4. Spalte i verwendet, um den folgenden Code: (vorausgesetzt, der Eingang inColumn und der Ausgang ist outColumn)

    If Not Row.inColumn_IsNull AndAlso _ 
        Not String.IsNullOrEmpty(Row.inColumn) Then 
    
        Row.outColumn = Row.inColumn 
    
    Else 
    
        Row.outColumn_IsNull = True 
    
    End If 
    

ODER

Wenn die Quelle ein OLEDB Source Sie eine Umsetzungsfunktion im

ex OLEDB source command

verwenden:

SELECT CAST([COLUMN] as NVARCHAR(255)) AS [COLUMN] 
FROM .... 
+0

Meinen Sie 'CAST ([COLUMN] als NVARCHAR2 (255)) '? – goneos

+0

Nein, es ist 'nvarchar', ich nahm an, dass Ihre Quelle eine SQL-Tabelle ist und das Ziel eine Oracle-Tabelle ist. – Hadi

+0

Wenn die Quelle ein Oracle-Server ist, verwenden Sie' CAST ([Spalte] AS VARCHAR2 (255)) ' – Hadi

Verwandte Themen