SSIS Excel接続マネージャーエラー0xC0209303を解決するにはどうすればよいですか?


9

ExcelファイルをSQL ServerテーブルにインポートするSSISパッケージを作成しました。

SSISパッケージを自分のマシンでローカルに実行すると問題なく実行されますが、パッケージがスケジュールされるサーバーで実行すると、次のエラーが発生します(テキストファイルから、SSISログを使用してエラーを出力しています)。

調査した後、私が見つけた唯一の推奨事項は、Run64BitRuntimeプロパティをfalseに設定することでしたが、それでもうまくいきませんでした。私が見つけた記事のように、エラーが64ビットに関して何も指定していないため、これが私のエラーの原因であるとは思いません。

また、サーバーに適切なExcelドライバーがないことも考えられますが、通常はエラーメッセージにドライバーが登録されていないというメッセージが表示されるため、そうではありません。

現在、サーバーへのリモートアクセスがありません。パッケージをフォルダーにアップロードするだけで、アプリケーションによって実行されるため、表示されるエラーメッセージは、作成したテキストエラーログの内容だけです。

ここに画像の説明を入力してください

エラーコードDTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。接続マネージャ "Envision"へのAcquireConnectionメソッドの呼び出しは、エラーコード0xC0209303で失敗しました。この前に、AcquireConnectionメソッドの呼び出しが失敗した理由の詳細を含むエラーメッセージが表示される場合があります。

"Envision"は、私のExcel接続マネージャーの名前です。

式を使用してExcelファイルパスと接続文字列を入力します。

接続文字列式は次のようになります。

"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + @ [User :: SourceFilePath] + "; Extended Properties = \" EXCEL 12.0 XML; HDR = YES \ ";"

SSIS Pacakgeは、Windowsのユーザー名/アカウントによって実行されます。Webサービスアカウントの可能性があります。(BDS_sprtIIS)

ローカルマシンでのみ機能するパッケージのこの問題を解決する方法に関する解決策や提案はありますか?パッケージが展開される実際のサーバーでは機能しませんか?

私は別のフォーラムで以下の回答を見つけました、それが私の問題の原因である可能性がありますか?彼らは基本的に、Excel接続マネージャーが何らかの理由でユーザーの一時フォルダーにアクセスしようとし、そのフォルダーへのアクセス権がない場合は失敗することを言っています。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-the-connection-manager-excel-connection- manager-failed-with?forum = sqlintegrationservices

Microsoft.JET.OLEDB.4.0ドライバーが、ログインしているユーザーのプロファイルの下にある一時ディレクトリを読み取ろうとすることにも気付きました。

...下位レベルのドメインアカウントを使用してSQLエージェントを実行し、プロキシアカウントを使用してSSISパッケージを実行します。プロクモンも私のためにそれを確認したので、あなたは正しいです。プロキシアカウントにプロファイルの一時ディレクトリ(C:\ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp)へのアクセス権を与えたところ、機能しました!

SQL Serverジョブまたはプロキシアカウントを使用していません。パッケージは、コマンドラインスクリプトを介して、Windowsアカウントによって実行される可能性が高いです。

Windowsアカウントはファイルにアクセスできますが、「TEMP」フォルダーにアクセスできるかどうかはわかりません(パッケージでこれを参照していないため、そのフォルダーにアクセスする必要がある理由がわかりません)。 ...

回答:


8

サーバーでのパッケージの実行を妨げていた2つの問題がありました。以下は、私が見つけた2つの問題と解決策です。

  1. パッケージは、デフォルトで64ビットDTexecユーティリティを使用するアプリケーションによって実行されますが、Excel接続マネージャーを介してExcelファイルに正しくアクセスできるようにするには、32ビットバージョンのユーティリティを使用してパッケージを実行する必要があります。

    32ビット(64ビットではなく)DTExecユーティリティを呼び出し、コマンドを渡して元のパッケージを開くプロセス実行タスクを使用する「ラッパー」SSISパッケージを作成しました。

    プロセス実行タスク

  2. また、32ビットバージョンのMicrosoft Accessデータベースエンジン2010再頒布可能パッケージをインストールする必要がありました。

参考文献:

Microsoft.ACE.OLEDB.12.0が登録されていません(スタックオーバーフロー)


2

32ビットアクセスエンジンをインストールして32ビットモードで実行すると、うまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.