Тайм-аут не соблюдается в строке подключения - PullRequest
25 голосов
/ 26 августа 2008

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

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

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

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

Ответы [ 2 ]

39 голосов
/ 26 августа 2008

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

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

14 голосов
/ 26 августа 2008

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

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...