Что вызывает истечение времени ожидания SqlException в LINQ to SQL? - PullRequest
15 голосов
/ 08 мая 2009

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

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

Ответы [ 3 ]

15 голосов
/ 08 мая 2009

увеличение времени ожидания = BAD
исправить запрос = ХОРОШО

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

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

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

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

10 голосов
/ 08 мая 2009

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

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

3 голосов
/ 08 мая 2009

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

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

...