Управление нестабильным SQL-соединением в Lotus Notes Agent

У меня есть рабочий агент Lotus Notes. Работает на LN 7. Мой агент запускается каждые 5 минут и отправляет письма всякий раз, когда находит определенные записи в таблице Microsoft SQL (2005).

Обычно он работает нормально, но в последнее время он перестал работать - больше одного раза - и не перезапустится снова, пока сервер Notes не будет перезапущен или администратор Notes не перезапустит все агенты (я не администратор заметок, поэтому я не совсем уверен, что он делает, я пытаюсь получить эту информацию, чтобы добавить к этому вопросу).

Я пытаюсь исключить все, о чем я могу думать, и единственное, что мне приходит в голову, это то, что MS SQL Server, на котором мой LN Agent выполняет запросы, имел некоторые проблемы со стабильностью и не всегда мог быть в сети ... Я подумал что это может быть причиной проблемы ... (я пытаюсь сопоставить журнал работоспособности из 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

Конец подписки


person frenetix    schedule 04.10.2010    source источник
comment
Просто подтверждаю, что версия Notes Domino Server - 6.5.1. Администратор заметок только что сказал мне, что вместо перезагрузки он пробует это на командной консоли: telamgr quit Затем он возвращает это с помощью этой команды: Load namgr Но похоже, что выход всех агентов занимает много времени.   -  person frenetix    schedule 04.10.2010


Ответы (2)


У меня была очень похожая проблема (в Domino 6.0.4), и это было связано с ошибкой. Прошло некоторое время, поэтому я не помню, где я обнаружил, что это указано как «но» (вероятно, на notes.net), но я потратил много часов, пытаясь найти обходной путь. В моей ситуации единственным решением была перезагрузка сервера.

Попросите администратора проверить журналы на наличие сообщений об ошибках примерно во время срабатывания агента. Вы также можете добавить несколько операторов печати к агенту, которые будут записаны в журнал, просто для подтверждения того, что агент работает.

Если ваша проблема такая же, как у меня, симптомы будут следующими:

  • агент работает нормально, но в журнале есть ошибка, связанная с отправкой сообщений.
  • Любые другие агенты, отправляющие почту, также будут затронуты.
  • Работает нормально неделями, а то и месяцами, а потом вдруг перестает работать.
  • и, к сожалению, единственное исправление, которое я когда-либо нашел, - это перезагрузка, когда это произойдет.
person Ken Pespisa    schedule 04.10.2010
comment
Спасибо, Кен. Симптомы аналогичны тем, которые вы упомянули ... но мы получаем это сообщение об ошибке на консоли сервера Windows: Ошибка подключения к Microsoft SQL Server: SQLState: 'S1T00' Ошибка SQL Server: 0 [Microsoft] [ODBC SQL Server Драйвер] Истекло время ожидания. Так что я все еще думаю, что мне следует попытаться лучше управлять своим SQL-соединением от агента ... вам не кажется? - person frenetix; 06.10.2010
comment
Да, это не совсем та проблема, с которой я столкнулся. Вы можете изучить альтернативный метод получения данных. Я использовал как соединения LC LSX, так и простой старый объект CreateObject (ADODB.Connection) для получения данных из SQL в Notes. Возможно, вы могли бы начать с этого с написания другого агента, использующего альтернативу классам ODBCConnection? - person Ken Pespisa; 07.10.2010

На всякий случай, если у кого-то такая же проблема:

Наконец, мы обнаружили, что были некоторые ошибки тайм-аута с сервера SQL, и на сервере Notes было сообщение об ошибке, которое блокировало запуск агента до тех пор, пока не будет нажата кнопка ОК (!).

Чтобы избежать этих «визуальных» ошибок на сервере, я узнал о параметре SilentMode в моем определении соединения OCBC: вот что вам нужно сделать:

con.SilentMode = True

Спасибо, в любом случае!

person frenetix    schedule 07.02.2011