Несколько лет назад ответом была ситуация, но теперь она изменилась, так что вы можете обратиться к источнику и написать резюме:)
Старый ответ
Эта превосходная статья рассказывает нам то, что нам нужно знать, используя рефлексию, чтобы раскрыть внутреннюю работу пула соединений.
Насколько я понимаю, «закрытые» соединения периодически очищаются с полуслучайным интервалом. Процесс очистки выполняется где-то между каждыми 2 минутами и 3 минутами 50 с, но он должен быть запущен дважды, прежде чем 'закрытое' соединение будет должным образом закрыто. Поэтому после 7 минут 40 секунд «закрытия» базовое соединение SQL должно быть правильно закрыто, но оно может быть коротким, как 2 минуты. На момент написания первого пула соединений, созданного в процессе, интервал таймера всегда составлял 3 мин 10 с, поэтому обычно вы видите, что соединения sql закрываются где-то между 3 мин 10 с и 6 мин 20 с после вызова метода Close () для объекта ADO. .
Очевидно, что здесь используется недокументированный код, поэтому он может измениться в будущем - или мог даже измениться с момента написания этой статьи.