日期:2014-05-18  浏览次数:20513 次

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 !
前面发的帖,由于自己回复超过3次无法继续了,总结下

最近遇到这个问题很头疼,百度的各种办法均不管用。
首先我这个数据库访问没有使用DataReader 也不存在未释放的Connection
执行的操作是批量数据插入 大概10000-100000条
1、我最初用了一个整体提交的事物。后来看网上说这样有可能导致超时,我把整体提交拆分成
每5000条一个事物的提交方式,依然超时。
2、web.config修改了添加了Max Pool Size=512 问题依旧
3、数据库为Oracle 以为是连接数问题,修改Sessions 数为1536 Processes 为1000 问题依旧
4、在本地vs2010调试插入正常,但在服务器上就出此异常
5、在执行插入的时候用PL/SQL发现Oracle 的Sessions猛增

请问各位我这是什么情况?  
环境 服务器Win2003 DotNetFramework 4.0 补丁全打 IIS 6.0

数据库访问层的代码

  GetCommand();
  System.Data.Common.DbTransaction trans = dbCommand.Connection.BeginTransaction();
  dbCommand.Transaction = trans;
  try
  {
  for (int i = 0; i < listEntity.Count; i++)
  {
  string Sql = string.Empty;
  System.Data.Common.DbParameter[] parms = GetSqlString(ref Sql, listEntity[i]);
  BuildSqlCommandWithoutReturn(Sql, parms);

  if (dbCommand.ExecuteNonQuery() < 0)
  {
  trans.Rollback();
  CloseConnection();
  return false;
  }
  dbCommand.Parameters.Clear();
  }
  trans.Commit();
  }
  catch (Exception ex)
  {
  trans.Rollback();
  throw ex;
  }
  finally
  {
  CloseConnection();
  }
  return true;

------解决方案--------------------
还是得检查代码,看看哪里的connection没有释放。
------解决方案--------------------
肯定是连接未关闭
从你的代码上,虽然没看出来
,应该是别的地方的连接问题