Connect Timeout: как это работает для SQL Server?

Ролг Хупин

Есть приложение, коннектится к серверу, в коннекте устанавливается Connect Timeout=30Пишут такое:"Connect Timeout applies ONLY when it is able to resolve the server and waits for a connection."Отработает ли этот таймаут, если я запущу приложение после того как:1. Остановлю SQL Server сервис2. Вырву провод из компьютера?
16 ответов

Ролг Хупин

Есть приложение, коннектится к серверу, в коннекте устанавливается Connect Timeout=30Пишут такое:"Connect Timeout applies ONLY when it is able to resolve the server and waits for a connection."Отработает ли этот таймаут, если я запущу приложение после того как:1. Остановлю SQL Server сервис2. Вырву провод из компьютера?
Вряд ли, потому как
when it is able to resolve the server
что вряд ли able при остановленном сервере и недоступной сетке.А вообще - "практика - критерий истины".


Ролг Хупин

Вряд ли, потому какчто вряд ли able при остановленном сервере и недоступной сетке.А вообще - "практика - критерий истины".
да в том и проблема, что юзер утверждает, что когда он вырывает провод или останавливает сервис, то указанный таймаут не срабатывает


Ролг Хупин

И еще: была вот такая тема, в ходе гугления по которой я нарыл, что таймаут коннекта еще действует и на таймаут коммита транзакции.


Ролг Хупин

да в том и проблема, что юзер утверждает, что когда он вырывает провод или останавливает сервис, то указанный таймаут не срабатывает
А что происходит? ничего? или что-то, но с другим таймаутом?


Ролг Хупин

да в том и проблема, что юзер утверждает, что когда он вырывает провод или останавливает сервис, то указанный таймаут не срабатывает
Может он ждет, что у него отвалится соединение? Нет, оно не отвалится. Это таймаут на УСТАНОВКУ соединения, то есть Connection.Open


Ролг Хупин

А что происходит? ничего? или что-то, но с другим таймаутом?
скажем, ставит 30 сек, и рвет провод, вылетает с ошибкой о недоступности сети раньше


Ролг Хупин

скажем, ставит 30 сек, и рвет провод, вылетает с ошибкой о недоступности сети раньше
Ну дак это хорошо.В оракле я получал код ошибки и выводил MessageBox(уборщица задела сетевой провод....


Ролг Хупин

скажем, ставит 30 сек, и рвет провод, вылетает с ошибкой о недоступности сети раньше
рвет провод в какой момент? Мало поставить таймаут, надо ведь еще начать открывать соединение и уложиться в эти 30 сек


Ролг Хупин

точнее не так - порвать провод, а потом запускать установку соединения.


Ролг Хупин

В обоих случаях будет получена ошибка до истечения таймаута. Данный таймаут действует если все работает нормально, но ответа от скуль-сервера нет из-за того, что запрос выполняется дольше, чем время таймаута.


Ролг Хупин

точнее не так - порвать провод, а потом запускать установку соединения.
Даже еще более не так - начать устанавливать соединение, и выдернуть провод до его установки. Тогда эксперимент можно будет считать корректным.
скажем, ставит 30 сек, и рвет провод, вылетает с ошибкой о недоступности сети раньше
Ошибка потери коннекта, и ошибка таймаута коннекта - это две большие разницы. Я, кстати, на своей практике с ошибкой таймаута коннекта вообще ни разу не сталкивался.


Ролг Хупин

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


Ролг Хупин

Нет, таймаут выполнения запроса - это SqlCommand.CommandTimeout, а здесь речь про SqlConnection.ConnectionTimeout.
Был невнимателен


Ролг Хупин

Я, кстати, на своей практике с ошибкой таймаута коннекта вообще ни разу не сталкивался.
вроде у сервера не будет свободных соединений, то возникнет


Ролг Хупин

да в том и проблема, что юзер утверждает, что когда он вырывает провод или останавливает сервис, то указанный таймаут не срабатывает
что то мне кажется ему внятное сообщение надо, а не таймаут.Провел тест, перехватил ошибку, поставил в коде обработку.Делов то.То что сервис остановлен равнозначно указать не тот ip adress.


Ролг Хупин

circuit breaker ему нужен, или retry паттерн :)