2

バックグラウンド

ディスクから 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 管理者にアドホック クエリを有効にしてもらう必要がありますが、これはうまくいかない可能性があります。これは私がローカルで動作するようになったドライバーですが、元の方法で既にローカルで動作していました ..

  • 私が言及していない他の修正は、これらは大まかなハックのようです..?

4

3 に答える 3

3

これはExcelドライバーに依存し、デフォルトではExcelドライバーは32ビットです。また、64ビットオペレーティングシステムでアプリケーションを試している場合は、間違いなくエラーがスローされます。

これを解決するには、[プロジェクトのプロパティ]>[デバッグ]>[デバッグオプション]に移動し、 Run64bitruntimeFalse に設定します。詳しくはこちらをご覧ください

于 2013-02-13T08:39:16.427 に答える
3

私の解決策は、iis アプリケーション プールを 32 ビット モードで実行することです。

私のasp.netページでこれを機能させた後、これはサイトをホストしているサーバーのブラウザー内からのみ機能することに気付きました。これは、このサーバーにアクセスするクライアントのブラウザーから動作させることに関連する私の投稿です。ASP.netのSSISパッケージはクライアントでは機能しませんが、サーバーでは機能します

于 2013-02-17T22:29:15.167 に答える
2

パッケージの実行方法によって異なりますが、実行前に 32 ビット ランタイムを強制するように設定できるプロパティがあります。Integration Services カタログ (SSIS 2012) 内では、実行時の詳細タブの下に、32 ビット ランタイム チェック ボックスがあります。

ここに画像の説明を入力

As its Excel, you are going to have to run as 32bit as there the 64bit Excel driver is not supported. This may help you SSIS 32 and 64 Bit - Todd McDermid

picture source

于 2012-11-19T11:43:34.507 に答える