1

中央サーバーにインストールされ、複数の場所から呼び出される SSIS 2005 パッケージがあります。このパッケージは、スクリプト タスクを使用して、c# で作成し、中央サーバーの GAC にインストールした .NET DLL を呼び出します。パッケージがインストールされているサーバーから SSIS パッケージを呼び出すと、すべて問題ありません。

SQL Server エージェントを使用してリモート サーバーからパッケージを呼び出すと、ジョブが失敗し、DLL が見つからないことが報告されます。

何が起こっているのかをテストするために、リモート サーバーに dll をインストールしたところ、パッケージは成功しました。そのため、パッケージはあるマシンにインストールされていても、SQL Server agend を使用して別のマシンから呼び出されると、実際には呼び出し元のマシンで実行され、すべての依存関係を満たす必要があるのは呼び出し元のマシンです。

このパッケージは、多数のサーバーから呼び出されますが、その多くは制御できません。

パッケージがインストールされているマシンの GAC から DLL を呼び出すように、このパッケージをビルドまたは実行する方法をインストール、構成、コンパイル、呼び出し、またはその他の方法で実行する方法はありますか?

4

1 に答える 1

1

残念ながら、SSIS パッケージ ストレージは単なるストレージであるため、設計を変更する必要があります。実行は常にパッケージが呼び出されたマシンで行われ、すべての参照はそのマシンに関連するものとして扱われます。

1 つのオプションは、呼び出し元のマシンの GAC に DLL をコピーして登録するタスクを SSIS パッケージに追加することですが、実行中のマシンの一部を制御できない場合、実行中の SQL エージェント アカウントが確実に実行されるという保証はありません。 DLL を登録するための十分な権利。

もう 1 つの解決策は、DLL コードを SSIS パッケージ内のスクリプト タスクに変換することです。これは、コードを C# から VB に変換することを意味し、コードの詳細によっては簡単ではない場合があります。

パッケージの目的と DLL の機能の詳細がなければ、他の代替案を評価することは困難ですが、パッケージをパラメーター化して、常にストレージ サーバーから実行できるようにすることが可能かどうかを検討できます。

于 2009-09-10T07:15:09.067 に答える