Есть ли разница между SqlCommand.CommandTimeout
и SqlConnection.ConnectionTimeout
в .NET?
В чем разница между SqlCommand.CommandTimeout и SqlConnection.ConnectionTimeout?
Ответ 1
Да. CommandTimeout
- как долго может выполняться одна команда для завершения. ConnectionTimeout
- сколько времени потребуется для установления соединения с сервером для начала.
Например, вы можете выполнять относительно длительные запросы - для них вполне нормально, если они заработают 10 минут, но если для начала подключения понадобилось 10 минут, вы бы знали, что что-то плохое неправильно.
Ответ 2
SqlCommand.CommandTimeout= ограничение тайм-аута для вашего SQL-запроса. Значит, сколько времени может выполнить запрос (например: SELECT, UPDATE) для его выполнения. Если он превышает SqlCommand.CommandTimeout, он прекращает выполнение. Произойдет ошибка таймаута команды.
SqlConnection.ConnectionTimeout= ограничение времени для вашего соединения. Значит, сколько времени ваш объект подключения может попытаться подключиться. Если он превышает указанное время, он перестает подключаться. Ошибка тайм-аута соединения.
Ответ 3
ConnectionTimeout
указывает продолжительность ожидания до истечения времени ожидания при попытке открыть a SqlConnection
. Это относится к команде Connection.Open()
.
а
SqlCommand.CommandTimeout
указала продолжительность ожидания SqlCommand до истечения времени ожидания. Это происходит после того, как соединение было открыто и один из методов ExecuteXXX
был вызван в объекте Command.
Ответ 4
Дополнительная информация
Значение по умолчанию CommandTimeout
составляет 30 секунд. Zero (0) указывает на отсутствие ограничений. Вы можете установить значение CommandTimeout
только в кодировке.
Значение по умолчанию ConnectiontTimeout
составляет 15 секунд. Zero (0) также указывает на отсутствие ограничений. Меньше нуля (минус значение) получится ArgumentException
. Вы можете установить значение ConnectionTimeout
как в файле Coding, так и в Config.
Ответ 5
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms