在 Lotus Notes 代理上管理不稳定的 SQL 连接

Posted

技术标签:

【中文标题】在 Lotus Notes 代理上管理不稳定的 SQL 连接【英文标题】:Managing an unstable SQL connection on a Lotus Notes Agent 【发布时间】:2010-10-04 17:11:55 【问题描述】:

我有一个有效的 Lotus Notes 代理。在 LN 7 上运行。 我的代理每 5 分钟运行一次,每当它在 Microsoft SQL (2005) 表上找到一些特定记录时,它就会发送一些邮件。

它通常工作正常,但最近它停止工作 - 现在不止一次 - 并且在 Notes 服务器重新启动或 Notes 管理员重新启动所有代理之前不会再次重新启动(我不是 Notes 管理员,所以我我不太确定他在做什么,我正在尝试获取此信息以添加到此问题中)。

我试图排除我能想到的任何事情,我唯一想到的是,我的 LN 代理运行查询的 MS SQL Server 存在一些稳定性问题,并且可能并不总是在线。 .我认为这可能是问题的原因...(我正在尝试将 SQL 中的正常运行时间日志与我的代理上次成功完成的时间进行交叉引用)。

我在想是否有任何方法可以管理连接,而不是我正在做的事情,所以我可以排除(缺少)连接问题。

提前感谢您提供的任何建议。

亲切的问候,

迭戈

Option Public 

Uselsx "*LSXODBC"

Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim subject As String, cc As String, bcc As String, sender As String, OID As String, mailto As String, bodyNotMIME As String
Dim body As NotesMIMEEntity


On Error Goto errorCounter

Set db = session.CurrentDatabase

Gosub SendMailGeneral

Exit Sub

SendMailGeneral:
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim defaultQuery As String
Set qry.Connection = con    
If con.ConnectTo("DSN_Name","USER_NAME", "PASSWORD") Then
    Set result.Query = qry
    defaultQuery = "select TOP (10)  * from Message  where StatusType=0"
    qry.SQL = defaultQuery      
    result.Execute
    If (result.IsResultSetAvailable) Then
        Do
            result.NextRowcode

            //here´s all the code that gets the results from each table´s fields and transform them into notes mails

        Loop Until result.IsEndOfData
    End If
End If
result.Close(DB_CLOSE)  
Return

结束子

【问题讨论】:

确认一下,Notes Domino Server 版本是 6.5.1。注释管理员刚刚告诉我,他没有重新启动,而是在命令控制台上尝试了这个:telamgr quit 然后他用这个命令取回它:Load namgr 但似乎退出所有代理需要很长时间。 【参考方案1】:

我遇到了一个非常相似的问题(在 Domino 6.0.4 中),这是由于错误造成的。已经有一段时间了,所以我不记得我在哪里发现它报告为但是(可能在 notes.net 上),但我花了很多时间试图找出解决方法。在我的情况下,唯一的解决方法是重新启动服务器。

让您的管理员在代理触发时检查日志中是否有任何错误消息。您还可以向代理添加一些打印语句,这些语句会写入日志,以确认代理正在运行。

如果你的问题和我的一样,症状是:

代理运行正常,但日志中出现与发送消息相关的错误。 任何其他发送邮件的代理也会受到影响。 它可以正常工作数周甚至数月,然后突然停止工作。 不幸的是,我发现的唯一解决方法是在发生这种情况时重新启动。

【讨论】:

谢谢肯。症状与您提到的症状相似...但我们在 Windows 服务器控制台上收到此错误消息:Microsoft SQL Server Login Connection failed: SQLState: 'S1T00' SQL Server Error: 0 [Microsoft][ODBC SQL Server Driver] Timeout expired 所以我仍然认为我应该尝试更好地管理来自代理的 SQL 连接......你不觉得吗? 是的,这与我遇到的问题不完全相同。您可以研究另一种获取数据的方法。我使用了 LC LSX 连接和一个普通的旧 CreateObject("ADODB.Connection") 将数据从 SQL 获取到 Notes。也许您可以从那里开始,通过使用 ODBCConnection 类的替代方案编写另一个代理?【参考方案2】:

以防万一其他人有同样的问题:

我们终于发现 SQL 服务器出现了一些超时错误,并且 Notes 服务器上出现了一条错误消息提示,该提示会阻止代理运行,直到单击确定按钮 (!)。

为了避免服务器上出现这些“视觉”提示错误,我在 OCBC 连接定义中发现了 SilentMode 选项:您必须这样做:

con.SilentMode = True

还是谢谢!

【讨论】:

以上是关于在 Lotus Notes 代理上管理不稳定的 SQL 连接的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Lotus Notes Java 代理检查浏览器版本/名称?

如何为 Lotus Notes 编写和使用 Java 代理

lotus notes8.5软件出现问题!!!

如何使用 Lotus Notes API 从 Java 创建和运行代理

打开Lotus Notes 时出现“打开窗口出错”

Lotus Notes 6.5打不开怎么办