У меня есть хранимая процедура, которая безумно теряет время ожидания каждый раз, когда она вызывается из веб-приложения.
Я запустил Sql Profiler и проследил вызовы, у которых истекло время ожидания, и наконец обнаружил следующие вещи:
Помимо того, что у моего веб-приложения есть собственный пользователь, все одинаково (одна и та же база данных, соединение, сервер и т. Д.) Я также пробовал выполнить запрос прямо в студии с пользователем веб-приложения, и это заняло не более 6 секунд.
Как мне узнать, что происходит?
Я предполагаю, что это не имеет ничего общего с тем фактом, что мы используем уровни BLL> DAL или адаптеры таблиц, поскольку трассировка ясно показывает, что задержка присутствует в реальной процедуре. Это все, о чем я могу думать.
РЕДАКТИРОВАТЬ В этой ссылке я обнаружил, что ADO.NET устанавливает ARITHABORT
в значение true - что хорошо в большинстве случаев но иногда это случается, и предлагаемый обходной путь - добавить с опцией перекомпиляции
к сохраненной процедуре. В моем случае это не работает, но я подозреваю, что это очень похоже на это. Кто-нибудь знает, что еще делает ADO.NET или где я могу найти спецификацию?