2009-05-08 1 views
15

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

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

ответ

10

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

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

+3

И как я должен это понимать? –

3

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

Вот код article по коду проекта.

15

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

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

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

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

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

+2

Мы настроили запрос как можно больше. К сожалению, вы можете сделать так, чтобы ускорить процесс вытаскивания 15k записей из таблицы из 2 миллионов записей через связанный сервер. –

+0

отредактируйте ваш вопрос и включите вывод из SET ShowPlan_All ON –

+1

@ Джейсон Бейкер. У меня есть много запросов, которые объединяются в несколько таблиц с большим количеством строк, чем ваши 2 миллиона, и они работают намного быстрее, чем 30 секунд. Вы говорите: «Мы настроили запрос как можно больше», и именно поэтому я предлагаю свою помощь. –