Ошибка истечения времени ожидания при выполнении хранимой процедуры, которая извлекает 7000+ данных - PullRequest
0 голосов
/ 19 октября 2011

Я написал хранимую процедуру, которая получает более 7000 строк.При выполнении хранимой процедуры в моем приложении winforms VB.NET, я получаю сообщение об ошибке, как показано ниже.

Истекло время ожидания.Время ожидания истекло до завершения операции, или сервер не отвечает.

Я гуглил и пытался использовать эти строки кода, которые были бесполезны.

    sqlCmd.CommandTimeout = 0
    sqlCmd = New SqlCommand("waitfor delay '00:00:60'")

Пожалуйста, помогите мне с этим.

Ответы [ 3 ]

1 голос
/ 19 октября 2011

Есть несколько мест, где вы можете испытывать тайм-аут.Некоторые вещи, которые нужно попробовать.

  1. Запустите хранимую процедуру с точно такими же параметрами в Sql Management Studio.Сколько секунд это займет?Это даст вам представление о том, как долго вам нужен ваш тайм-аут.Если это займет более 30-60 секунд, рассмотрите возможность пересмотра sql, добавления индексов и настройки базы данных.
  2. CommandTimeout - это время ожидания вашей конкретной команды.Вам следует избегать установки его в 0, хотя это может сработать, http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx
  3. ConnectionTimeout - это свойство тайм-аута для всего вашего соединения.Если это меньше, чем ваш CommandTimeout, он будет переопределен.Опять же, 0 следует избегать здесь.http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx
0 голосов
/ 21 июня 2013

Не рекомендуется устанавливать тайм-аут на 0. Оставшийся ответ будет только для увеличения лимита, НО ..

Увеличение тайм-аута похоже на решение проблемы с лейкопластырем. Что делать, если у вас есть более длинный запрос? Вы просто увеличите время ожидания снова?

Чтобы решить эту проблему, пожалуйста, обратитесь к моему ответу здесь ..

Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает

0 голосов
/ 19 октября 2011

Вы должны увеличить commandTimeOut и не ставить его 0.

Попробуйте ввести значение 60, что означает 1 минуту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...