Сколько времени серверное соединение sql будет простаивать до того, как он будет закрыт пулом соединений?

У меня есть клиент-серверное приложение, которое использует поставщик данных .NET SqlClient для подключения к серверу sql - довольно стандартный материал. По умолчанию, как долго должны быть отключены соединения до того, как диспетчер объединения пулов закроет соединение с базой данных и удалит его из пула? Какая настройка, если кто-либо контролирует это?

Этот документ MSDN говорит только

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

Ответ 1

Несколько лет назад ответ был ниже, но теперь он изменился, поэтому вы можете ссылаться на source и написать summary:)


Старый ответ

Эта отличная статья рассказывает нам о том, что нам нужно знать, используя отражение, чтобы выявить внутреннюю работу пула соединений.

Как я понимаю, "закрытые" соединения периодически очищаются в полуслучайном интервале. Процесс очистки выполняется где-то между каждыми 2min и 3min 50s, но он должен запускаться дважды, прежде чем "закрытое" соединение будет правильно закрыто. Поэтому после того, как через 7 минут 40 секунд "закрыто" базовое соединение sql должно быть правильно закрыто, но оно может быть коротким, как 2 минуты. На момент написания первого пула соединений, созданного в процессе, всегда был бы интервал таймера 3min 10s, поэтому вы обычно видите, что соединения sql закрываются где-то между 3min 10s и 6min 20s после вызова Close() на объекте ADO.

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