バックグラウンド
ディスクから SSIS パッケージを実行する asp.net Web アプリケーションを実装しました。これは、Visual Studio からデバッグで実行すると機能しますが、サーバーにリリースされると、以下のエラーのように 64 ビット SSIS について不平を言います。
解決策に関する多くの投稿を見てきましたが、私のシナリオに最も適切な修正方法については確信が持てません。このリリースでは、Web サーバーと asp.net c# アプリケーション コードに完全にアクセスできますが、データベース サーバーには制限付きでアクセスできます。
エラー: *SSIS エラー コード DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: OLE DB プロバイダーが利用できないため、Excel 接続マネージャーは SSIS の 64 ビット バージョンではサポートされていません。SSIS エラー コード DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER*
C# コード
string pkgLocation;
Package pkg;
Application app;
DTSExecResult pkgResults;
string result = string.Empty;
string dtsErrors = string.Empty;
try
{
pkgLocation = packagePath;
app = new Application();
pkg = app.LoadPackage(pkgLocation, null);
pkgResults = pkg.Execute();
//Add any errors to string for notifying user
foreach (DtsError local_DtsError in pkg.Errors)
dtsErrors += " " + local_DtsError.Description;
result = pkgResults.ToString();
}
catch (Exception exception)
{
result = exception.Message;
}
考えられる解決策 (推奨事項を教えてください)
SSIS を 32 ビット プロセスとして実行します (これを行うにはどうすればよいですか? また、私の状況では動作しますか?)
Excel/Access 用の 64 ビット ドライバーをインストールし、openrowset で SQL ストアド プロシージャを使用して、SSIS の代わりにデータを取得します。これについてよくわかりません。データベース サーバーと Web サーバーにドライバーが必要ですか? また、db 管理者にアドホック クエリを有効にしてもらう必要がありますが、これはうまくいかない可能性があります。これは私がローカルで動作するようになったドライバーですが、元の方法で既にローカルで動作していました ..
私が言及していない他の修正は、これらは大まかなハックのようです..?