任何人都可以帮助摆脱这个错误
“超时已过期。从池中获取连接之前已超时。发生这种情况是因为所有池连接都在使用中并且达到了最大池大小”
谢谢
答案 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>