c#已达到SQL最大池大小

时间:2011-05-10 20:27:48

标签: c# sql connection-pooling

我有一个简单的while循环来检查数据库是否有插入。如果它在循环中太长,我的尝试catch会得到“达到最大池大小”错误。所以在循环的底部我有一个连接clearallpools();但这仍然无法解决。

while (!quit)
{
connection to database strings timeout=400

read from database


connection.clearallpools();
}

3 个答案:

答案 0 :(得分:4)

可能你没有关闭你的连接......你可能想要使用

while(!quit){
    //do something here
    using(var connection = GetMyConnection()){
        //do your db reads here
    }
    //do validations and something more here
}

这将确保您的连接正确处理/关闭。

此外,您无需清除池。

SQLConnection / DBConnection对象实现IDisposable。你可能想通过这些

答案 1 :(得分:3)

您很可能继续在循环中打开新连接

在循环上方打开连接是using语句,然后在循环中使用它。另请注意clearallpools删除

using(create new connection)
{
    while (!quit)
    {
    connection to database strings timeout=400

    read from database


    // connection.clearallpools(); REMOVE THIS!!!!
    }
}

答案 2 :(得分:0)

你正在耗尽连接池。每次读取后,您应该关闭连接,然后将其释放回池中。