SQL Server:已达到最大池大小

时间:2017-05-24 06:26:53

标签: c# sql-server ado.net

每当应用程序池被回收时,我都会在从c#应用程序连接SQL Server时观察到以下错误。我已经检查过这个错误收到的时候,数据库中只打开了20个连接,尽管实际限制是200(我在web.config中设置)。

此外,连接在代码中已正确关闭,因此不会出现问题。请注意,每次游泳池回收时都不会发生这种情况,但在我们系统有交通的一天内就会发生。

  

System.InvalidOperationException:超时已过期。超时期限   在从池中获取连接之前已经过了。这可能有   之所以发生,是因为所有池化连接都在使用中,并且最大池大小   达成了。在   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(的DbConnection   owningConnection,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1次重试,DbConnectionOptions userOptions)at at   System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(的DbConnection   outerConnection,DbConnectionFactory connectionFactory,   TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1   重试)   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1   重试)在System.Data.SqlClient.SqlConnection.Open()处   System.Data.SqlClient.SqlConnection.Open()

2 个答案:

答案 0 :(得分:0)

每次打开连接时,请确保必须将其关闭。

Max pool size was reached

答案 1 :(得分:0)

试试这个:

    SqlConnection cn = new SqlConnection(strCn);
    try
    {
        using (SqlCommand cmd = new SqlCommand("select * from xxxx", cn))
        {
            cn.Open();

            //do something

            cn.Close();
        }
    }
    catch (Exception exception)
    {
        cn.Close();
        throw exception;
    }