7

私の会社は最近、tivoli ワークロード スケジューラ (TWS) を使用して、z/OS からウィンドウ サーバーへのリモート トリガー ジョブを実行しています。tivoli が mssql サービスを正常にトリガーできることをテストしました。

問題は、AS400 の一部のデータを mssql サーバーに抽出するために毎日使用する .NET CL プログラムがあることです。これは、Windows スケジューラを使用して特定の時間枠で毎日トリガーする前に完全に機能していました。ここで、TWS が準備済みのバッチ ファイルをリモートでトリガーするように、スケジューラーを集中化しようとしています (これにより、CL プログラムがトリガーされます)。

しかし、CL プログラムを実行すると、AS400 DB に接続しようとすると次のエラーが表示されます。

.Net Framework データ プロバイダーには、Microsoft Data Access Components (MDAC) が必要です。Microsoft Data Access Components (MDAC) バージョン 2.6 以降をインストールしてください。

EDITED:通常のシナリオでは、プログラムが正常にトリガーできると想定されていました.Windowsスケジューラを使用するのと同じように、スケジュールを設定して実行する必要があります. 唯一の違いは、スケジューラーが現時点では Windows スケジューラーではなく、TWS に切り替えて CL プログラムをリモートでトリガーすることです。しかし、実行すると、CL プログラムの実行中に上記のエラーが表示されます。このエラーが発生する理由はわかりません。CL プログラムを再実行し、Windows スケジューラでスケジュールしようとしましたが、問題なく動作しました。しかし、TWS でリモートでスケジュールすると、エラーが発生します。

これまでに行ったテストと観察については、次のとおりです。

  1. 私たちのサーバーは Windows サーバー 2008 SP2 x64 です。サーバー 2008 は新しいバージョンの MDAC (WDAC 6.0) を提供する必要がありますが、古いバージョンの Windows で使用されている MDAC をいくつか調査しましたが、再インストールできないため、MDAC/WDAC は正しくインストールしてください。

  2. CL プログラムは .NET 2.0/3.0/3.5 でコンパイルされ、それらすべてをテストすると同じエラーが発生します。

  3. エラーログはSQL Server DBに出力できたので、CLプログラムで使用している接続ドライバは問題ないと思います。IBMDA400 ドライバーが原因の可能性があります。

  4. TWS はサーバーの管理者アカウントを使用してバッチ ファイルをトリガーします。TWS クライアント (リスナー) は、サーバー内のプログラムをトリガーするためにサーバーにインストールされますが、サーバー (SSH? telnet?) への接続方法がわかりません。リモートトリガーのためにサーバーに実際にログインしていないようです(サイレントモードでジョブをトリガーします)。

誰かが手がかりや考えを提供できれば、それは非常に役に立ち、将来同じ問題を抱えている人々に大きな助けになるでしょう。

どうもありがとうございました!。

4

3 に答える 3

5

このエラーの理由は、アプリケーション プールが常に読み込まれていない HKey_Current_User ハイブからレジストリ キーを読み取ろうとしていることが原因です。解決策は次のとおりです。

  1. IIS 管理コンソールを開く
  2. 「アプリケーション プール」をクリックします。
  3. Web サイトのプールを右クリックし、[詳細設定] を選択します。
  4. [ユーザー プロファイルの読み込み] 設定を True に変更します。
于 2014-10-21T19:57:38.707 に答える
1

調査するためのいくつかの手段を提供することしかできません。

  1. IBMDA400 OLE DB プロバイダーを使用する代わりに、IBM DB2 iSeries ADO.NET データ プロバイダーを使用してみてください。私のチームは、x64 である新しい Windows Server への再プラットフォーム化プロジェクトを行ったときに、同様の経験をしました。何らかの理由で、.NET Windows サービスで古い OLE DB プロバイダーを使用しようとすると、非常に奇妙な結果が得られました。後で、サーバーが 64 ビットであることが原因であることがわかりました。

  2. IBMDA400 が 32 ビット ドライバーであることに問題があると思われます。.NET CL プログラムを 64 ビットとしてコンパイルしているかどうかを確認します。プログラムを32 ビット アプリケーションとしてコンパイルし、サーバーで Wow64 を有効にすることができます。

これらのいずれかが解決策につながることを願っています!

于 2012-05-25T05:26:14.710 に答える