У нас есть сложное клиент-серверное приложение, которое разработано с использованием .NET Framework и использует SQL Server 2005. Мы используем LinqToSql, но мы управляем временем жизни всех соединений и передаем открытые соединения любому создаваемому DataContext. Мы также использовали Microsoft WF в этом продукте. WF создает собственные подключения для сохранения экземпляров рабочих процессов.
Когда сервер работает в течение дня или двух, мы получаем «ReclaimedConnections», что означает, что мы не закрыли некоторые из соединений SQL, которые мы использовали. Мы рассмотрели весь код и использовали возможные средства, чтобы убедиться, что мы закрываем все и все соединения, которые мы создаем. Кажется почти невозможным, чтобы соединение оставалось открытым, потому что там очень мало мест, где мы их используем.
Есть ли способ узнать, когда был сделан вызов на SqlConnection.Open()
или SqlConnection.Close()
. Нам нужно знать, когда эти методы вызываются и кто был вызывающим (возможно, для этого получим стек вызовов).
Спасибо