Да, я видел подобные вещи раньше. В строке подключения могут быть параметры, которые могут помочь уменьшить его, но тайм-ауты и / или потери в сети могут нарушить базовое (часто TCP) соединение с сервером БД. Затем вы увидите ошибку, проявленную в следующем вводе-выводе в базу данных.
Я рекомендую обернуть доступ к общему соединению, чтобы вы могли прозрачно перехватить эту конкретную ошибку и повторить попытку. Держите соединение частным в классе или модуле и используйте такие методы, как:
'Open is called to set the args to connect, these should be saved for reconnect
Public Sub Open(connect params here)
'save arsg to prive members to reconnect
'connect to db
End Sub
Public Function OpenKeyset(sql) As RecordSet
Set rs = New ADODB.Recordset
On Error Resume Next
rs.Open strSql, privateConn, adOpenKeyset
'if the error is the disconnect
If Error.Number = xxx Then 'or inspect the error message or error collection
'turn of error trap
Err.Clear
On Error Goto 0
'reopen db conn
'then retry
rs.Open strSql, privateConn, adOpenKeyset
End If
OpenKeyset = rs
End Function
Вы могли бы даже периодически выполнять операции без операции дБ, такие как запрос к каталогу или что-либо еще, чтобы сохранить работоспособность соединения и восстановить соединение. Вы также можете наблюдать за большими скачками во времени, которые происходят, если компьютер переходит в спящий режим.