“超时从池中获取连接”

时间:2009-07-17 06:02:10

标签: asp.net vb.net

任何人都可以帮助摆脱这个错误

“超时已过期。从池中获取连接之前已超时。发生这种情况是因为所有池连接都在使用中并且达到了最大池大小”

谢谢

4 个答案:

答案 0 :(得分:3)

确保您正在为您创建的实现IDisposable的每个对象实现使用块:

using (var connection = new SqlConnection(connectionString)) {
    using (var command = new SqlCommand(query, connection)) {
        using (var reader = command.ExecuteReader()) {
            while (reader.Read()) {
                // do something with row
            }
        }
    }
}

否则,当发生异常时,您将泄漏资源(包括连接)。

BT,在VB中,那是

Using connection As SqlConnection = New SqlConnection(connectionString))
...
End Using

答案 1 :(得分:1)

这通常在耗尽所有可用连接后尝试连接到数据库时发生。这篇关于Tuning Up ADO.NET Connection Pooling in ASP.NET Applications的文章应该解释如何解决您遇到的问题。这就是说要尝试的事情:关闭所有SqlConnections,处理所有Sqldatasources,并增加最大池大小。

答案 2 :(得分:1)

您是否记得在使用它们后关闭每个数据库连接?

答案 3 :(得分:-1)

在您的连接字符串中,请务必设置 pooling = false

<connectionStrings>
    <clear/>
    <add 
name="YourConnectionString"
connectionString="Server=localhost;Database=your_db;Uid=username; _
Pwd=password;pooling=false;" <---------------POOLING = FALSE
providerName="yourprovider"/>
</connectionStrings>