Informix IDS 11.7 で実行されている ERP システムから SQL サーバー (2012) にデータをインポートするためのパッケージ スイートを作成中です。
SSIS を使用してこのデータをインポートすると、問題が発生しました。ODBC 接続と ADO.NET データ ソースを使用する方法と、OLEDB 接続とプロバイダーを使用する方法の 2 通りでデータにアクセスできます。
ODBC を使用すると、約 3 倍遅くなります (控えめに言っても!)。
ただし、問題は、OLEDB を使用すると、データ ソースが間違ったデータ型を報告することです。
サーバー上の NVARCHAR データ型は、VARCHAR (DT_STR) として SSIS に報告されています。これにより、データをインポートするときに問題が発生します。これは、入ってくる Unicode データによってパッケージが失敗するためです。ここでデータ変換を行う機会はありません。データがデータ ソース コンポーネントにヒットすると、パッケージは失敗します。これらのエラーを無視するようにコンポーネントを設定できます。問題なく動作しますが、データが欠落しているため、まったく受け入れられません。
setnet32 で DB_LOCALE と CLIENT_LOCAL を設定しようとしましたが、何の効果もありません。
OLEDB データ ソースを作成すると、既定のコード ページが見つからないというメッセージが表示されるため、プロパティを "AlwyasUseDefaultCodePage" に true に設定してその警告を消す必要がありますが、既定のコード ページを設定しても、コード ページを 65001 などに設定しても、このデータを VARCHAR として取り込もうとしています。
それで、私の質問は、Informix から OLEDB ドライバーを正しく動作させるにはどうすればよいか、またはこのデータが実際には DT_STR ではなく DT_WSTR であると SSIS に認識させるにはどうすればよいでしょうか?
ありがとう!