0

我们的邮件服务器存在问题,这突出了我几年前建立的系统中的一个弱点,该系统用于在完成报告时向部门发送电子邮件。

当前设置邮件服务器的代码被硬编码为

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

我们遇到的问题是,04 服务器目前充其量是不稳定的,当它崩溃时,每个人都被路由通过其中一个复制服务器。对于桌面 Notes 客户端来说,处理这个问题并没有太大的问题,但是应用程序根本无法发出任何邮件,并且这样做时没有发出任何失败通知。

有没有一种方法可以测试主服务器上是否存在可用数据库,如果没有,则回退到其中一个复制服务器上?

4

2 回答 2

3

NotesDatabase 对象有一个属性“IsOpen” - 布尔值 - 在调用 notesSession.getDatabase 后,可用于检查数据库是否已成功打开。因此,您可以执行以下操作:

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

编辑:只是为了完整性......还有一个可选的第三个参数可以传递给 GetDatabase 方法 - 一个布尔值 - 它指定在无法打开数据库(或服务器)时是否返回有效对象,或者返回一个值什么都没有。将第三个参数指定为 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 回答