4

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 に認識させるにはどうすればよいでしょうか?

ありがとう!

4

1 に答える 1

2

したがって、これを機能させるために必要な手順を要約します (少なくとも後世のために)。

OLEDB 接続を設定するときは、2 つのパラメーターを追加する必要があります -

RSASWS=TRUE;
UNICODE=TRUE;

これら 2 つのパラメータは、少なくとも Informix 4.1 ドライバでは、接続の GUI には表示されません。

これらを追加するには、接続の「ConnectionString」プロパティを変更して、これら 2 つのプロパティを接続文字列の末尾に追加する必要があります。このプロパティは、接続 GUI を開くたびに上書きされることに注意してください。このインターフェイスに入るたびに、接続文字列を手動で変更する必要があります。

接続文字列を設定するためのもう 1 つのオプションは、変数 (または SQL 2012 の SSIS のパラメーター) を使用することです。そのため、接続文字列に自動的に加えられた変更は実行時に修正されます (パラメーターを使用すると、実際には設計時に修正されます)。 .

このデータ ソースで見つけた最後の注意点は、nvarchar が nchar であるかのように、空のスペースで埋められているように見えることです。これはソース データに問題がある可能性がありますが、これを設定する場合は、トリム ステップを追加する必要があるかどうかを確認してください。

于 2013-07-31T03:31:42.763 に答える