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