Управление нестабильным соединением SQL на агенте Lotus Notes - PullRequest
0 голосов
/ 04 октября 2010

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

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

Я пытаюсь исключить все, что могу придумать, и единственное, что мне приходит в голову, это то, что MS SQL Server, на котором мой агент LN выполняет запросы, имел некоторые проблемы со стабильностью и не всегда мог быть подключен к сети .. . Я подумал, что это может быть причиной проблемы ... (Я пытаюсь сопоставить журнал рабочего времени из SQL с последним успешным завершением моего агента).

Я думал, есть ли способ управления соединением, кроме того, что я делаю, поэтому я могу исключить (отсутствие) проблемы с соединением.

Заранее благодарим за любые советы, которые вы можете предоставить.

С уважением,

Diego

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

End Sub

Ответы [ 2 ]

0 голосов
/ 07 февраля 2011

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

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

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

con.SilentMode = True

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

0 голосов
/ 04 октября 2010

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

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

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

  • агент работает нормально, но в журнале есть ошибка, связанная с отправкой сообщений.
  • Будут затронуты и любые другие агенты, отправляющие почту.
  • Он отлично работает в течение нескольких недель, даже месяцев, а затем внезапно перестает работать.
  • и, к сожалению, единственное исправление, которое я когда-либо нашел, это перезагрузка, когда это происходит.
...