1

asp.net アプリケーションから ssis パッケージを実行します。ローカル マシン (32 ビット OS) で実行している場合、すべて正常に動作しています。しかし、リモート コンピューター (64 ビット OS) でサイトを公開すると、実行時エラーが発生しました。

Could not load file or assembly 'Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, 
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot
find the file specified.

とを自分の Web サイトの bin フォルダーMicrosoft.SqlServer.ManagedDTS.dllに入れました。Microsoft.SqlServer.DTSRuntimeWrap.dll

その後、次のエラーが発生しました。

 “An attempt was made to load a program with an incorrect format”

アプリケーション プールの iis で [32 ビット アプリケーションを有効にする] オプションをオンにし、プロジェクトのプロパティでプラットフォーム ターゲットを x86 に変更しました。

そして今、次のエラーがあります:

 Retrieving the COM class factory for component with CLSID {BA785E28-3D7B-47AE-A4F9-4784F61B598A}
 failed due to the following error: 80040154 Class not registered 
 (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

それを修正する方法はありますか?または、間違った方向に進んでいる可能性がありますか? どんな助けでも大歓迎です。

4

2 に答える 2

2

MSDN リファレンス:

パッケージをリモートで実行する概念を理解するには、MSDNのトピック「ローカル実行とリモート実行の違いについて」を参照してください。

You can only run a package outside the development environment on a 
computer that has Integration Services installed

Integration Servicesパッケージをホストするサーバーがインストールされているはずです。に関してライセンス モデルがどのように機能するかについては、Microsoft のドキュメントを参照してくださいIntegration Services。パッケージを実行するサーバーに DLL のみをコピーしても、問題は解決しません。

パッケージの実行をリモートで呼び出すことはできますが、パッケージをホストするサーバー上で Integration Services が必要です。

MSDN ブログ記事:

プログラムによる SSIS パッケージの実行 ASP.NET からの SSIS パッケージの実行について説明している記事のポイント1を読んでください。

記事から直接引用:

SSIS オブジェクト モデルを使用してプログラムでパッケージを実行します。これについては、Books Online で詳しく説明しています: http://msdn2.microsoft.com/en-us/library/ms136090.aspx

Benefits:すべてがプロセス内で実行され、実行前に変数を設定したり、パッケージを変更したりするのは非常に簡単です。パッケージの進行状況に関するイベントを取得したり、CancelEvent を設定して停止するように依頼したりすることもできます。

Drawbacks:明らかに、これはローカルでの実行です。アプリを実行するのと同じマシンに SSIS をインストールする必要があります。このメソッドは、.NET 2.0 に移行しない限り、.NET 1.1 アプリケーションからも使用できません (これは非常に簡単で、私の経験ではパフォーマンスも向上します)。

ASP.NET specific:偽装コンテキストは、SSIS パッケージが作成する追加のスレッドに渡されないため、データ ソース接続は偽装されません。また、ASP.NET アプリケーションの可用性を向上させるために大量のメモリを消費する場合に備えて、ワーカー プロセスをリサイクルするように ASP.NET を構成することもできます。大量のデータがある場合、SSIS は大量のメモリを消費する可能性が高いため、このリサイクルがトリガーされ、アプリケーションの信頼性が低下する可能性があります。

于 2013-02-15T15:12:51.460 に答える
0

背景
SSIS パッケージのビルド バージョンが ASP.NET プロジェクトの Microsoft.SqlServer.ManagedDTS.dll バージョンと一致するため、これはローカル コンピューターで機能します。ここで、SSIS ビルド パッケージのライブラリ バージョンを Microsoft.SqlServer.ManagedDTS.dll バージョンと一致させる必要があります。バージョンが一致している必要があり、32 ビットと 64 ビットのライブラリも一致している必要があります。

回答
これを行う簡単な方法は、(リモート サーバー上の) パッケージに SSIS スクリプト タスクを追加し、[スクリプトの編集] ボタンをクリックすることです。ここで、SSIS ライブラリ リファレンスを参照すると、SSIS パッケージが読み込まれたバージョンが表示されます。これは、ASP.NET プロジェクトでコンパイルするために必要なものです。このスクリプト タスクは後で削除できます。

于 2015-11-11T18:10:31.687 に答える