У меня есть хранимая процедура, которая выдает ошибку «Время ожидания истекло».
Используемый код — ADO/VB6.
Сама хранимая процедура не является проблемой, вы можете запустить ее в окне запроса, и это займет меньше секунды.
Код, используемый для подключения и т. д., также имеет модульную структуру и используется во всем огромном приложении. Только в этом одном месте происходит тайм-аут в одной конкретной базе данных.
Ошибка будет воспроизводиться каждый раз для сотен попыток, независимо от того, запускаете ли вы код VB6 в режиме отладки или нет, а затем вдруг все волшебным образом снова начнет работать. Потом через какое-то время та же проблема появится снова.
Я не уверен, сколько кода здесь разместить, в этом нет ничего сложного; это в основном;
Set adoCommandObject.ActiveConnection = ...{open ADODB.Connection object}
Set rs = CreateObject("ADODB.Recordset")
Call rs.Open(adoCommandObject, , adOpenForwardOnly, adLockReadOnly)'Timeout occurs here
Я наблюдал в профилировщике, но это не дало никаких подсказок, за исключением того, что иногда я видел операторы «SET NO_BROWSETABLE ON» / «SET NO_BROWSETABLE OFF», возникающие до и после запуска sp.
Я искал в сети, но не смог найти удовлетворительной помощи для этого; На данный момент я готов попробовать что угодно (кроме перезаписи в .NET, к сожалению, это не вариант!)