0

メールサーバーに問題があり、数年前にレポートの完了時に電子メール部門に設定したシステムの弱点が浮き彫りになりました。

現在メールサーバーを設定しているコードは、次のようにハードコードされています。

Set objNotesMailFile = objNotesSession.GETDATABASE("XXX-BASE-MAIL-04/CompanyName", dbString)

私たちが抱えている問題は、04サーバーが現時点では不安定であり、フォールオーバーしたときにすべてのサーバーがレプリケーションサーバーの1つを経由してルーティングされていることです。デスクトップNotesクライアントはこれを処理するため、それほど問題にはなりませんが、アプリケーションは単にメールの送信に失敗しており、失敗の通知を行わずに送信しています。

メインサーバー上に利用可能なデータベースが存在するかどうかをテストし、存在しない場合はレプリケーションサーバーの1つにフォールバックする方法はありますか?

4

2 に答える 2

3

NotesDatabaseオブジェクトには、notesSession.getDatabaseを呼び出した後、データベースが正常に開かれたかどうかを確認するために使用できるプロパティ「IsOpen」(ブール値)があります。したがって、次のようなことができます。

Set objNotesMailFile = objNotesSession.GETDATABASE("XXX-BASE-MAIL-04/CompanyName", dbString)
if not (objNotesMailFile.IsOpen) then
  ' try next server
  ...
end if

編集:完全を期すために... GetDatabaseメソッドに渡すことができるオプションの3番目の引数(ブール値)もあります。これは、データベース(またはサーバー)を開くことができないときに有効なオブジェクトを返すか、値を返すかを指定します。何もありません。3番目の引数をFALSEとして指定すると、NOTHINGが返され、確認できます。結局、同じ結果です。

于 2009-07-08T13:41:08.597 に答える
1

あなたはおそらくこのようなものを使いたいでしょう:

Dim db As New NotesDatabase( "", "" )
Call db.OpenWithFailover( "XXX-BASE-MAIL-04/CompanyName", dbString )

特定のサーバーでデータベースを開くことができないが、サーバーがクラスターに属している場合、OpenWithFailoverは、同じクラスター上の指定されたサーバーのレプリカを自動的に検索します。メソッドがレプリカを見つけると、代わりにそのデータベースが開かれ、それに応じてサーバーのプロパティが調整されます。

于 2011-04-30T10:13:21.943 に答える