У меня есть хранимая процедура, которая является ошибкой с «Истекло время ожидания».Время ожидания хранимой процедуры - но при запуске с SSMS
Используемый код - 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» заявления происходит до и после прогонов зр.
Я искал сеть, но не смог найти удовлетворительной помощи для этого; Я готов попробовать что-нибудь в этой точке (кроме переписывания в .NET, к сожалению, это не вариант!)
Пара вопросов: Вы получаете тайм-аут Истекает через долгое время или мгновенно? Если долгое время, профилировщик согласен с тем, что длительность команды была такой долгой? –
Время ожидания истекает через некоторое время - 30 секунд или около того - я думаю, что такое тайм-аут, возможно, по умолчанию. Да, профайлер согласен - после того, как ошибка была сгенерирована в коде VB6, вы увидите штрих-код в профилировщике с большой длительностью. – DannykPowell
Вы определили решение, поскольку я в ситуации similer! – 2010-08-15 04:17:01