Есть ли разница между SqlCommand.CommandTimeout
и SqlConnection.ConnectionTimeout
в .NET?
.net
sqlconnection
sqlcommand
Дханапал
источник
источник
Ответы:
Да.
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
значение как в файле Coding, так и в файле конфигурации.источник
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 set LOCK_TIMEOUT = 600//set TIMEOUT with ms
источник
Небольшое примечание относительно CommandTimeout, поскольку это свойство как объектов Connection, так и Command ...
Параметр CommandTimeout для объекта Connection не влияет на параметр CommandTimeout для объекта Command в том же Connection; то есть свойство CommandTimeout объекта Command не наследует значение значения CommandTimeout объекта Connection.
Таким образом, параметр CommandTimeout в объекте Connection влияет только на команды, выполняемые только под объектом Connection (без использования объекта Command).
например, когда вы подключаетесь к хранимой процедуре и добавляете параметры к объекту команды и выполняете объект Command с использованием соединения объекта подключения, тогда вам нужно будет установить CommandTimeout для объекта Command и ConnectionTimeout для объекта Connection, чтобы переопределить оба по умолчанию. Установка CommandTimeout для объекта подключения не отменяет тайм-аут по умолчанию для команд объекта Command.
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/commandtimeout-property-ado?view=sql-server-ver15 https://docs.microsoft.com/en-us / sql / ado / справочник / ado-api / connectiontimeout-property-ado? view = sql-server-ver15
источник