2011-03-10 111 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 

如果我執行此代碼,此測試應用程序會在數據庫打開The timeout period elapsed prior to obtaining a connection from the pool異常之前打開115個連接。但應用程序池中只有100個連接。這怎麼可能?.net中的連接池

+0

他 - 他。你是對的!我將它們添加到List中,並在第100次連接後發生異常。我不知道爲什麼我沒看到它:)。你能複製粘貼你的評論作爲答案嗎?我會接受它。 – Egor4eg 2011-03-10 15:06:17

+0

我有同樣的懷疑,想知道你是如何解決它的......它的迫切..? @ Egor4eg – 2011-10-11 01:59:10

+0

@AkhilKNambiar:問題是使用連接不處置 – Egor4eg 2011-10-11 09:18:35

回答

3

猜測:既然你沒有持有對開放連接對象的引用,那麼前15個可能會被丟棄和重用?如果你將連接推到List<>上,你還能得到115嗎?