В чем разница между SqlCommand.CommandTimeout и SqlConnection.ConnectionTimeout?

Есть ли разница между SqlCommand.CommandTimeout и SqlConnection.ConnectionTimeout в .NET?

Ответ 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