0

ローカル コンピューターからいくつかの SSIS パッケージを実行できますが、Windows サーバー R2 の Windows サービスを介して同じパッケージを実行しようとすると失敗します。Windows サービス コード:

DTS を使用 = Microsoft.SqlServer.Dts.Runtime;

    DTS.Package pkg;
            DTS.Application app;
            DTS.DTSExecResult pkgResults;
            app = new DTS.Application();
            pkg = app.LoadPackage(pkgLocation, null);
            pkgResults = pkg.Execute();

サーバーにサービスをインストールしていますが、開始すると app = new DTS.Application(); で失敗します。

サーバーには既に SSIS がインストールされており、コマンド プロンプトからパッケージを実行することもできます。完全なエラー メッセージは次のとおりです。

Microsoft.SqlServer.Dts.Runtime.DtsComException:

Integration Services クラスが見つかりません。アプリケーションを実行しているコンピューターに Integration Services が正しくインストールされていることを確認します。また、64 ビット アプリケーションを実行している場合は、64 ビット バージョンの Integration Services がインストールされていることを確認してください。--->

System.Runtime.InteropServices.COMException: CLSID {BA785E28-3D7B-47AE-A4F9-4784F61B598A} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80040154 クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))。

Microsoft.SqlServer.Dts.Runtime.Application..ctor() で --- 内部例外スタック トレースの終わり --- Microsoft.SqlServer.Dts.Runtime.Application..ctor() で

これについて何か助けはありますか?

4

1 に答える 1

0

この記事によると、SSIS の 32 ビット バージョンがインストールされているようです。コマンド プロンプトから実行する場合、統合サービスの 64 ビットの考慮事項 によると、64 ビット バージョンがインストールされていても、32 ビット バージョンが使用されます。

既定では、64 ビット バージョンと 32 ビット バージョンの両方の Integration Services コマンド プロンプト ユーティリティがインストールされている 64 ビット コンピューターは、コマンド プロンプトで 32 ビット バージョンを実行します。32 ビット バージョンのディレクトリ パスが 64 ビット バージョンのディレクトリ パスの前に PATH 環境変数に表示されるため、32 ビット バージョンが実行されます。(通常、32 ビットのディレクトリ パスは :\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn であり、64 ビットのディレクトリ パスは :\Program Files\Microsoft SQL Server\100\DTS\Binn です。 .)

あなたのサービスは 64 ビットに対して構築されているため、SSIS パッケージは 64 ビット バージョンを要求しましたが、それが見つかりませんでした。

そのため、32 ビットで実行するように変更するか、64 ビット バージョンの Integration Services をインストールします。

于 2013-07-10T10:41:55.293 に答える