Тайм-аут, не соблюдаемый в строке подключения

StackOverflow https://stackoverflow.com/questions/27472

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть долго работающий оператор SQL, который я хочу запустить, и независимо от того, что я помещаю в предложение "timeout=" моей строки подключения, кажется, что оно всегда заканчивается через 30 секунд.

Я просто использую SqlHelper.ExecuteNonQuery() чтобы выполнить его, и позволить ему позаботиться об открытии соединений и т.д.

Есть ли что-то еще, что может переопределять мой тайм-аут или заставлять sql server игнорировать его?Я запустил profiler поверх запроса, и трассировка не выглядит иначе, когда я запускаю ее в management studio, по сравнению с моим кодом.

Management Studio завершает запрос примерно за минуту, но даже при тайм-ауте, равном 300 или 30000, время ожидания моего кода все равно истекает через 30 секунд.

Это было полезно?

Решение

Что вы используете для установки тайм-аута в строке подключения?Из памяти это "ConnectionTimeout" и влияет только на время, необходимое для фактического Контакты на сервер.

Каждая отдельная команда имеет отдельный "CommandTimeout", который был бы тем, что вы ищете.Хотя не уверен, как SqlHelper это реализует.

Другие советы

В дополнение к таймауту в строке подключения, попробуйте использовать свойство timeout SQL-команды.Ниже приведен пример C #, использующий класс SqlCommand.Его эквивалент должен быть применим к тому, что вы используете.

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top