#sql-server #.net-framework-4.8
#sql-сервер #.net-4.8
Вопрос:
Я пытаюсь выполнить запрос к базе данных SQL Server из веб-приложения, и через 30 секунд я получаю следующую ошибку:
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Я знаю, что время выполнения по умолчанию составляет 30 секунд, но я пытался изменить время ожидания в нескольких местах. В строке подключения к веб-приложению у меня есть:
Timeout=300;connection lifetime=5;
Веб-приложение использует DLL, которая подключается к базе данных для выполнения запросов, и когда я выполняю команду в DLL, у меня есть:
Comm.CommandTimeout = 5 * 60;
Я не уверен, что я делаю не так, поскольку я уже некоторое время изучал эту проблему и, похоже, не могу понять, где я ошибаюсь. Есть идеи?
Комментарии:
1. Тайм-аут команды должен быть установлен с помощью
SqlCommand.CommandTimeout
свойства, а не строки подключения. Тем не менее, 30 секунд могут быть большим временем для веб-приложения. Возможно, настройка запроса / индекса является лучшим решением, чем увеличение времени выполнения команды.2. @DanGuzman Я устанавливаю его, с
Comm.CommandTimeout = 5 * 60;
помощью которого обрабатывается DLL. Это на 5 минут, так как это большой запрос, но он все равно истекает через 30 секунд, запрос в SSMS обычно занимает 43 секунды.