1

とりわけ、20 の異なる Excel 2010 ファイルのそれぞれにある 9 つの異なるタブに書き込む必要がある SSIS 2012 パッケージがあります。

データ フロー タスクの 1 つで、Visual Studio 2012 内でパッケージを実行すると、検証中に次のエラーが発生します。

エラー: MyPackage の 0xC0014020、接続マネージャー "Excel ファイルは何でも": ODBC エラー -1 が発生しました。
エラー: MyPackage の 0xC0014009、接続マネージャー "Excel ファイルは何でも": データベース サーバーとの Open Database Connectivity (ODBC) 接続を確立しようとしてエラーが発生しました。

このエラーを生成するこのデータ フロー タスクは、機能する場合、各 Excel ファイルの 6 つのタブに書き込みます。この SSIS パッケージの以前のバージョンではファイルが少なかった (4 つ) ため、問題なく動作しました。また、各 Excel ファイルの他の 3 つのタブに書き込む、同じパッケージ内の別のデータ フロー タスクも正常に動作します。2 つのデータ フロー タスクは、同じ接続マネージャーを使用しています。エラーで指定された特定の接続マネージャーは、パッケージが実行されるたびに変更されます。

ODBC トレースを有効にしたところ、ログに次のエラーが見つかりました。

DIAG [08004] [Microsoft][ODBC Excel Driver] クライアント タスクが多すぎます。(-1036)

ODBC destinations に関するいくつかのドキュメントを見つけました。関連する部分は次のとおりです。

同じテーブルまたは異なるテーブルに対して、同じマシンまたは異なるマシン上で並列に実行できる ODBC 宛先コンポーネントの数に制限はありません (通常のグローバル セッション制限を除く)。

ただし、使用されている ODBC プロバイダーの制限により、プロバイダーを介した同時接続数が制限される場合があります。これらの制限により、ODBC 宛先でサポートされる並列インスタンスの数が制限されます。SSIS 開発者は、使用されている ODBC プロバイダーの制限を認識し、SSIS パッケージを構築する際にそれらを考慮する必要があります。

わかりました。でも:

  1. Microsoft Access データベース エンジン 2010 再頒布可能パッケージに含まれる 32 ビット Excel ドライバーの並列接続の制限は何ですか? それともそれも問題ですか?
  2. 並列接続に制限がある場合、検証フェーズ中を含め、パッケージを実行するときに SSIS に制限を適用させるにはどうすればよいですか?

追加情報として、すべての ODBC 接続マネージャーで DelayValidation を True に設定しています。パッケージの開始時にファイルがまだ存在しないため、すべての ODBC 宛先で ValidateExternalMetadata を False に設定しています (ファイルのコピー タスクにより、パッケージ内のすべてのファイルが以前に作成されます)。各接続マネージャーの接続文字列は式によって生成されますが、結果は次の形式になります。

Dsn=Excel Files;dbq=c:\MyWorkspace\Whatever-20130701-to-20130917.xlsx;defaultdir=c:\MyWorkspace;driverid=1046;fil=excel 12.0;maxbuffersize=2048;pagetimeout=5;

式で使用されるパラメータにより、ファイル名とディレクトリ名のみが変更されます。

4

0 に答える 0