2011-03-10 2 views
3
Imports System.Data.SqlClient 

Module Module1 

    Sub Main() 
     Dim iCount As Integer = 1 
     Try 
      Do 
       Dim sqlConn As New _ 
       SqlConnection("Data Source=localhost;trusted_Connection=yes;initial catalog = MyDatabase;max pool size =100;") 
       sqlConn.Open() 
       Trace.WriteLine("opening connection " & CStr(iCount)) 
       'sqlConn.Close() 
       'Trace.WriteLine("closing connection " & CStr(iCount)) 
       'sqlConn.Dispose() 
       'Trace.WriteLine("disposing connection " & CStr(iCount)) 
       iCount = iCount + 1 
      Loop Until iCount > 20000 
     Catch ex As Exception 
      Trace.WriteLine(ex.ToString) 
     End Try 
    End Sub 

End Module 

Si j'exécute ce code, cette application de test ouvre 115 connexions à la base de données avant de déclencher l'exception The timeout period elapsed prior to obtaining a connection from the pool. Mais il n'y a que 100 connexions dans le pool d'applications. Comment est-ce possible?Pool de connexions dans .net

+0

He-he. Tu as raison! Je les ai ajoutés à List et j'ai reçu une exception après la 100ème connexion. Je ne suis pas sûr pourquoi je ne l'ai pas vu :). Pourriez-vous copier-coller votre commentaire en guise de réponse? Je vais l'accepter. – Egor4eg

+0

J'ai le même doute et je voulais savoir comment vous l'avez résolu ... Son urgence ..? @ Egor4eg –

+0

@AkhilKNambiar: Le problème est utilisé connexions ne sont pas disposés – Egor4eg

Répondre

3

Devinez: puisque vous ne détenez pas de références aux objets de connexion ouverts, peut-être que les 15 premiers sont éliminés et réutilisés? Avez-vous toujours 115 si vous poussez les connexions sur un List<>?

Questions connexes