Oracle DBに接続していますが、接続は機能しますが、一部の列で次のエラーが発生します。
_Description: Column "RESOURCE_NAME" cannot convert between unicode
and non-unicode string data types.
_
RESOURCE_NAMEの値:
VARCHAR2(200 BYTE)
VARCHAR(200 BYTE)
Oracle SQL Developerを介してOracle DBに問題なく接続できます。また、SSISパッケージ設定_Run64BitRuntime = False
_があります。
Oracleデータ型VARCHAR2
は、SQL ServerではNVARCHAR
、SSISではDT_WSTR
と同等のように見えます。 参考
Data Conversion Transformation、またはSQL ServerのCAST
またはCONVERT
関数を使用して変換する必要があります。
パッケージが1つのマシンで機能し、他のマシンでは機能しない場合。 NLS_LANGを適切な言語、地域、文字セットに設定して、パッケージをテストしてください。
[Command Prompt]> set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
これを回避する最も簡単な方法は、SSISパッケージをメモ帳(dtsxファイル)で開き、グローバルな検索とすべてのインスタンスの置換を行うvalidateExternalMetadata = "True" with validateExternalMetadata = "False"を使用します。
注:SSISを介してLinux上のOracle 11gデータベースに接続すると、この問題が発生しました。
SSISでSQLコマンドを使用し、CONVERT
またはCAST
を使用できます。それでもSSISでエラーが発生する場合は、メタデータが原因です。これを修正する方法は次のとおりです。
oledbソース->高度なエディターオプション->入力/出力列->出力列-> RESOURCE_NAME列を選択し、データ型をDT_WSTRに変更し、長さも必要に応じて変更できます
上からすべてが失敗した場合。テーブル変数を作成し、そこにデータを挿入します。次に、すべてのレコードをソースとして選択します。スクリプトでSET NOCOUNT ONを使用します。
データフローの「Data Conversion」ブロックをダブルクリックするだけで、すべてのアイテムで「Unicode String [DT_WSTR]」に変更できます。
作品