Что вызывает истечение времени ожидания SqlExceptions в LINQ to SQL?

Мое приложение продолжает работать с истечением срока действия SqlExceptions. Дело в том, что этот запрос - это тот, который просто должен работать в течение достаточного количества времени. У меня возникли проблемы с выяснением, где это исключение происходит. Является ли это тайм-аутом, созданным на сервере базы данных, или это происходит в моей программе? Или, если это может быть и то, и другое, как я могу определить, какой из них?

И наконец, как продлить период ожидания?

Ответы

Ответ 1

Вероятно, вы работаете над CommandTimeout, установленным в вашем DataContext. По умолчанию это значение составляет 30 секунд.

Все, что вам нужно сделать, это установить свойство в DataContext перед выполнением запроса.

Ответ 2

увеличить таймаут = БАД
fix query = ХОРОШЕЕ

Я не уверен в всех деталях, но в целом применяется followng:

при медленном выполнении запроса в студии управления выполните следующие действия:

  • запустить SET ShowPlan_All ON
  • запустите запрос
  • Посмотрите на выход для слова "сканирование". ваша проблема есть.

"Сканировать" = коснуться каждой строки (таблицы или индекса). Вы хотите "сканировать" телефонную книгу, которая ищет один номер или использовать индекс?

Ответ 3

Вероятно, это связано с тем, что время ожидания по умолчанию составляет 30 секунд. Вы можете изменить это, установив атрибут Timeout в строке подключения. Alternatley вы можете установить это на DataContext.

Здесь статья о проекте кода об этом.