头疼难题:系统日志中发现大量“超时”错误,不知该问题是何原因造成?哪位大哥帮忙看一下!谢谢!!!
事件类型: 错误
事件来源: Application
事件种类: 无
事件 ID: 0
日期: 2005-1-7
事件: 9:08:45
用户: N/A
计算机: WEBHOST1
描述:
事件 ID ( 0 )的描述(在资源( Application )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: System.InvalidOperationException: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。   at System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction)
   at System.Data.SqlClient.SqlConnection.Open()
   at SMTech.SQLDAL.Database.Open() in D:\MyProject\Components\SQLServer\Database.cs:line 251
   at SMTech.SQLDAL.Database.CreateCommand(String procName, SqlParameter[] prams) in D:\MyProject\Components\SQLServer\Database.cs:line 220
   at SMTech.SQLDAL.Database.RunProc(String procName, SqlParameter[] prams) in D:\MyProject\Components\SQLServer\Database.cs:line 59
   at SM160.BLL.Users.LoadAccountInfo(AccountInfo accountInfo).

解决方案 »

  1.   

    没有及时释放所有的连接(Connection),导致连结池达到最大,后面的连接请求等待,直到超时取消;解决:检查所有的数据访问,保证 打开-〉使用 -〉马上关闭-〉dispose
      

  2.   

    1.可能是数据库连接没有全部关闭,你查一下程序,是不是有遗漏的地方;
    2.如果访问量很大的,在连接字符串中加一个"Max Pool Size = 1000 ",默认的100,你可以适当的加大连接迟的最大连接数,但条件是你要保证所有连接都在不需要时释放了!~~~~~~~
      

  3.   

    谢谢!!!我基本都是采用SqlDataReader dataReader 对象访问数据库,dataReader对象也必须要用dispose关闭吗?
      

  4.   

    只有分类一处用到DataSet,估计是这里出了问题,大家看看我的程序有多少问题? Category category  = new  Category(); DataSet ds = new DataSet();
     
    SqlDataAdapter da = category.GetTopSubList( m_type ); if(da!=null)
    {
    da.Fill(ds,"subCategory"); da = category.GetCurrentList( m_categoryId , m_type );
    da.Fill(ds,"currentCategory"); DataView dv = ds.Tables["currentCategory"].DefaultView;

    dlMainCategory.DataSource = dv;
    dlMainCategory.DataBind(); 
                            }
      

  5.   

    DataSet , SqlDataAdapter 这两个对象是否都忘了枪毙了?还有漏网的吗?