ExcelファイルをSQL ServerテーブルにインポートするSSISパッケージを作成しました。
SSISパッケージを自分のマシンでローカルに実行すると問題なく実行されますが、パッケージがスケジュールされるサーバーで実行すると、次のエラーが発生します(テキストファイルから、SSISログを使用してエラーを出力しています)。
調査した後、私が見つけた唯一の推奨事項は、Run64BitRuntimeプロパティをfalseに設定することでしたが、それでもうまくいきませんでした。私が見つけた記事のように、エラーが64ビットに関して何も指定していないため、これが私のエラーの原因であるとは思いません。
また、サーバーに適切なExcelドライバーがないことも考えられますが、通常はエラーメッセージにドライバーが登録されていないというメッセージが表示されるため、そうではありません。
現在、サーバーへのリモートアクセスがありません。パッケージをフォルダーにアップロードするだけで、アプリケーションによって実行されるため、表示されるエラーメッセージは、作成したテキストエラーログの内容だけです。
エラーコードDTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。接続マネージャー "Envision"へのAcquireConnectionメソッドの呼び出しがエラーコード0xC0209303で失敗しました。この前に、AcquireConnectionメソッドの呼び出しが失敗した理由の詳細が記載されたエラーメッセージが表示される場合があります。
「ビジョン」は私の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接続マネージャーが何らかの理由でユーザーの一時フォルダーにアクセスしようとし、そのフォルダーにアクセスできない場合は失敗することを述べています。
Microsoft.JET.OLEDB.4.0ドライバーが、ログインしているユーザーのプロファイルの下にある一時ディレクトリを読み取ろうとすることにも気付きました。
。
...下位レベルのドメインアカウントを使用してSQLエージェントを実行し、プロキシアカウントを使用してSSISパッケージを実行します。プロクモンも私のためにそれを確認したので、あなたは正しいです。プロキシアカウントに、プロファイルの一時ディレクトリ(C:\ Documents and Settings\SQLAgentDomainAccount\Local Settings\Temp)へのアクセス権を与えました。
SQL Serverジョブまたはプロキシアカウントを使用していません。パッケージは、おそらくWindowsアカウントによって、コマンドラインスクリプトを介して実行されるだけです。
Windowsアカウントにはファイルへのアクセス権がありますが、「TEMP」フォルダーへのアクセス権があるかどうかはわかりません(パッケージでこれを参照していないため、そのフォルダーにアクセスする必要がある理由がわかりません)。 ...
サーバーでのパッケージの実行を妨げていた2つの問題がありました。以下は、私が見つけた2つの問題と解決策です。
パッケージは、デフォルトで64ビットDTexecユーティリティを使用するアプリケーションによって実行されますが、Excel接続マネージャーを介してExcelファイルに正しくアクセスできるようにするには、32ビットバージョンのユーティリティを使用してパッケージを実行する必要があります。
32ビット(64ビットではなく)DTExecユーティリティを呼び出し、コマンドを渡して元のパッケージを開く実行プロセスタスクを使用する「ラッパー」SSISパッケージを作成しました。
32ビットバージョンの Microsoft Access Database Engine 2010 Redistributable もインストールする必要がありました。
参考文献:
32ビットアクセスエンジンをインストールして32ビットモードで実行すると、うまくいきました。