Тайм-аут Linq-to-SQL
Я получаю сообщение об ошибке на одной из моих страниц, что запрос linq затухал, поскольку он занимает слишком много времени. Это делает страницу непригодной.
Это страница отчетов, доступ к которой осуществляется только администраторами один раз в день. Это неизбежно, чтобы полностью обрезать этот запрос, он просто должен сортировать много данных.
Решения для исправления, которые я прочитал, - это увеличение ресурса тайм-аута в контексте данных, но я бы хотел избежать этого, так как это изменило бы его для всего веб-сайта.
Есть ли способ установить более длительный тайм-аут для отдельных страниц?
Ответы
Ответ 1
Только что нашел ответ, играющий с intellisense:
using (MainContext db = new MainContext())
{
db.CommandTimeout = 3 * 60; // 3 Mins
}
Таким образом вы можете увеличить время ожидания запроса на основе каждого запроса, как предполагается, чтобы изменить строки подключения или контексты данных.
Ответ 2
Ответ @Tom Gullens не работал у меня на EF6
Мне пришлось переходить к базе данных на DbContext
Ecom.Database.CommandTimeout = 120;
Надеюсь, это сэкономит вам некоторое время.
Ответ 3
Ответ Тома Гуллена - хороший.
Другой респондент упомянул о настройке таймаута соединения в строке подключения.
Я хотел бы предупредить, что свойство тайм-аута соединения строки соединения НЕ является таймаутом команды. Это более очевидно, когда вы об этом думаете. Это распространенная ошибка.
Ответ 4
Прежде чем увеличить тайм-аут SQL, всегда стоит оценить стратегию индексирования. По моему опыту, редко бывает, что запрос к хорошо индексированной таблице и столбцам истекает.
Де Оуэн