Тайм-аут не соблюдается в строке подключения
У меня есть длинный SQL-оператор, который я хочу запустить, и независимо от того, что я ввел в предложение timeout = моей строки подключения, он всегда заканчивается через 30 секунд.
Я просто использую SqlHelper.ExecuteNonQuery()
для его выполнения и позволяю ему следить за открытием подключений и т.д.
Есть ли что-то еще, что может переопределить мой тайм-аут или заставить SQL-сервер игнорировать его? У меня запущен профилировщик по запросу, и трассировка не выглядит по-разному, когда я запускаю ее в студии управления, по сравнению с моим кодом.
Студия управления завершает запрос примерно через минуту, но даже с таймаутом, установленным в 300 или 30000, мой код по-прежнему отключается через 30 секунд.
Ответы
Ответ 1
Что вы используете для установки тайм-аута в строке подключения? Из памяти, которая "ConnectionTimeout" и влияет только на время, необходимое для фактического подключения к серверу.
Каждая отдельная команда имеет отдельный "CommandTimeout", который будет тем, что вы ищете. Не уверен, что SqlHelper реализует это.
Ответ 2
В дополнение к таймауту в строке подключения попробуйте использовать свойство тайм-аута команды SQL. Ниже приведен пример С#, используя класс SqlCommand. Его эквивалент должен быть применим к тому, что вы используете.
SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();