Я пытаюсь выявить утечки SQL-соединения в своем приложении. После некоторых операций, когда мое приложение бездействует (пользователь не выполняет никаких действий), я вижу 7 соединений с моей базой данных в наборе результатов, возвращаемом sp_who2
. Статус всех подключений - Sleeping
, а значение Command
для всех - AWAITING COMMAND
.
Я использую пул соединений, но Connection Lifetime
не указан в строке соединения. Это означает, что по умолчанию будет использоваться значение 0, если я прав. Значение времени жизни соединения, равное нулю, означает, что SQL-сервер никогда не должен закрывать соединение, верно?
Некоторое время (15-20 минут) я держу свое приложение в режиме ожидания, а затем вижу, что sp_who2
НЕ показывает никакого соединения с моей базой данных. Мне интересно, почему я получаю этот результат, когда время жизни соединения равно нулю. Разрывает ли SQL Server неиспользуемое соединение через некоторое время независимо от значения времени жизни соединения?
Как определить, какое соединение открыто из-за утечки, а какое остается там из-за объединения в пул?
Мое приложение поддерживает SQL Server 2008, 2014 и 2016. Это приложение ASP.NEt.