Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();