SSISパッケージは、さまざまなサーバーで完全に動作しますが、新しく追加された2台のサーバーでは動作しません。 3つのVARCHAR2列を持つテーブルからORACLE DBのデータを取得し、同じサイズの3つのnvarchar列を持つSQL 2012テーブルに行をアップセットするために、OLEDB(64ビット、これを証明しました)を使用します。SSISはユニコードとノンユニコードの間で変換できません
パッケージは、展開したすべてのサーバーで問題なく動作していました。私たちは最近、2つの新しいサーバーを追加しました。私は個人的には可能な主要な原因を確認しました:ODAC、dtexecバージョン、tnsの名前は同じバージョンの同じソフトウェアですが、パッケージはもう動作しません。それは私達に有名なエラーを与える:
Description: Column "C_CODE" cannot convert between unicode and non-unicode s
tring data types.
End Error
Error: 2016-08-26 08:33:26.20
Code: 0xC02020F6
Source: Upsert Lines OLE DB Source [87]
Description: Column "S_DESC" cannot convert between unicode and non-unicode s
tring data types.
End Error
Warning: 2016-08-26 08:33:26.20
Code: 0x800470C8
Source: Upsert Lines OLE DB Source [87]
Description: The external columns for OLE DB Source are out of synchronizatio
n with the data source columns. The external column "C_CODE" needs to be updated
.
The external column "S_DESC" needs to be updated.
End Warning
私が得た最初の警告だった私が入れてみましたので、「Oracleサーバーからのコード・ページを読み取ることができません」ANSIとの組み合わせで、「デフォルトの1毎回使います」かUTF-8コードページ(このウェブサイトでコードページを取得するにはhttps://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx)
唯一の方法は、OLE DBソースブロックをパッケージに手動で変更することでした。これは、外部列をANSI文字列に変更し、開発環境ではコンパイルできないようにしてから、 utf-8文字列への外部列。 これは他のサーバーでは機能しませんが、「障害のある」サーバーでは完璧に機能します。
私は、パッケージがOracleサーバーからコードページを読み取れないという事実が原因だと考えていましたが、修正方法を理解できませんでした。
問題はどこからでも見つけることができるこの問題に関する数百万の質問のようなものではありません。エラーは、OLE DBソースブロックからのものです。私はデータ変換について知っています。問題がNLS_LANGレジストリキーの値だった事前
Attunity Connector for Oracle(ConnectionManagerType = MSORA)でこのエラーが発生したことはありません。あなたはそれを試しましたか? SSIS 2014:https://www.microsoft.com/en-us/download/details.aspx?id = 44582 SSIS 2012:https://www.microsoft.com/en-us/download/details.aspx? id = 29283。 お手伝いをしてください。 – vercelli
@vercelliこれは私にとって初めてのことです!私は間違いなくdev環境でそれを試してみるつもりです。ありがとう!システム管理者がシステム管理者に従事しなければならない場合は、ドライバをインストールすることを永遠に取ることになるので、私はまだ昔ながらの方法で解決することを願っています: ' – Massimo
システム管理者を扱う幸運; – vercelli