Чем отличается SqlCommand.CommandTimeout от SqlConnection.ConnectionTimeout? - PullRequest
77 голосов
/ 11 мая 2009

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

Ответы [ 5 ]

115 голосов
/ 11 мая 2009

Да. CommandTimeout - сколько времени может потребоваться для выполнения одной команды. ConnectionTimeout - это сколько времени может потребоваться для установления соединения с сервером, чтобы начать с.

Например, вы можете выполнять относительно длительные запросы - вполне нормально, что для их завершения потребуется 10 минут, но если потребуется 10 минут, чтобы установить соединение, вы бы знали, что что-то плохо неправильно.

27 голосов
/ 11 мая 2009

SqlCommand.CommandTimeout = предел времени ожидания для вашего запроса SQL. Означает, сколько времени (например: SELECT, UPDATE) может занять запрос для его выполнения. Если он превышает SqlCommand.CommandTimeout, выполнение прекращается. Произойдет ошибка тайм-аута команды.

SqlConnection.ConnectionTimeout = время ожидания для вашего соединения. Означает, сколько раз ваш объект соединения может пытаться соединиться. Если оно превышает указанное время, соединение прекращается. Произойдет ошибка тайм-аута соединения.

10 голосов
/ 11 мая 2009

ConnectionTimeout указывает продолжительность ожидания до истечения времени ожидания при попытке открыть и SqlConnection. Это относится к команде Connection.Open().

, а

SqlCommand.CommandTimeout указывает продолжительность ожидания команды SqlCommand до истечения времени ожидания. Это происходит после открытия соединения и вызова одного из методов ExecuteXXX для объекта Command.

7 голосов
/ 15 июля 2015

Дополнительная информация

Значение по умолчанию CommandTimeout составляет 30 секунд. Ноль (0) означает отсутствие ограничений. Вы можете установить значение CommandTimeout только в кодировке.

Значение по умолчанию ConnectiontTimeout составляет 15 секунд. Ноль (0) также указывает на отсутствие ограничений. Значение меньше нуля (минус значение) получит ArgumentException. Вы можете установить значение ConnectionTimeout как в файле Coding, так и в файле Config.

0 голосов
/ 06 января 2011
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
...