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