Обработка соединений с SQL Server, пулы соединений, время жизни и утечка соединений

Я пытаюсь определить утечки соединения 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.

1 ответ

Время жизни соединения с нулевым значением означает, что SQL-сервер не должен закрывать соединение никогда, верно?

Нет. Правила, используемые для очистки пула, недостаточно документированы AFAIK, но они могут быть закрыты администратором. См. https://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396.

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

Другие вопросы по тегам