使用asp.net开发网站,使用的sql server数据库,平时程序都正常,但是运行一段时间后,会出现SQL Server 不存在或访问被拒绝。也可能出现,
超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小.
这样的错误,检查程序开连接后都有写关闭,并释放资源。
数据库连接探测也没问题。
虽然这个问题每天会出现几次,但是总觉得不爽。希望有碰到过兄弟讨论一下。

解决方案 »

  1.   

    似乎是sql server的连接数达到最大值了
    检查一下你的代码,每次调用完数据库是否关闭数据库连接了
      

  2.   

    连接肯定都有开闭.出现问题时我第一反应可能没有半闭连接,但是查了所有数据层代码,全部都有关。并且连接池满的情况出现不多。大部分是“Server 不存在或访问被拒绝”。如果一直报这错还好,只是随机报一下,一天几次。管理网络的,又肯定网络没问题。
      

  3.   

    left join, right join ,inner join, conn.open()  SqlDataReader 这些东西是不是太多  ?没有及时关闭~!! 垃圾程序在100次点击后就能耗你资源的老多了
      

  4.   

    sqlserver进程管理中,连接数只有几个。所有存储过程都测试过,执行很快,没有死锁,不存在联表查询。没有使用read读数据。
    就是因为所有需要注意的点都注意到了,程序并不是不能正常运行,只是日志每天都会记录这样的错误,看着不爽。
      

  5.   

    前面项目中也遇到这个问题
    仔细梳理了一遍代码,确认在数据库模块所有的代码都关闭连接了
    后面用 
    1、打数据库最新补丁
    2、sp_configure   'user   connections',1000
    3、打开“控制面板”=》“许可协议”=》“产品:sql   server   xxxx"   下面选“每服务器”   100个并发连接然后只要系统运行正常,天要下雨,娘要嫁人,由它去了!
    当然我这是不负责的做法,但这样的问题想找到病根确实不容易.
      

  6.   

    呵呵,系统运行一切正常 ,不过出现问题得解决不是,把MSDN上的文章都看了,只有是有人提到的问题点都仔细检查过一次,优化或者SQL的组装方式,连接上的注意点都梳理了一遍,实在是找不到问题点了。确实郁闷。
      

  7.   

    如果是用sqlerver express,那么这种情况一定会出现,因为那个数据库服务在一段时间内没有访问,就会自已停,再次访问时会打开,但是如果打开时速度慢,就可能会出现这种情况.解决方法可以到sqlserver版查一下.
      

  8.   

    楼主用sqlerver express 做系统的可能性不大
    一起等待高人的回复吧说实话 如果是对数据库有高端的要求
    我对sql server的信心不足
      

  9.   

    用的sql server企业版。服务器是托管在电信机房。操作系统和数据库补丁都打过。
      

  10.   

    连接肯定都有开闭.出现问题时我第一反应可能没有半闭连接,但是查了所有数据层代码,全部都有关。并且连接池满的情况出现不多。
    ——————————————————————————————————————————
    往往,逻辑东西根本不能用眼睛简单遍历代码。就好像你看得懂一本小说的每一个字但是未必能够理解小说的深意,你认为你的代码都有些了关闭,但是你未必模拟了执行时的全部流程。最好的办法是用结构来彻底免去猜测流程分析的复杂责任。如果我去查,我会搜索整个解决方案中关于“关闭连接”的代码,如果发现了,就说明程序写错了。因为只应该使用using(){}结构来关闭,而不应该写代码关闭。
      

  11.   

    数据库连接使用两种方式关闭。
    一种是
    try
    {
    }
    catch
    {
    }
    finally
    {
      关连接
    }还用了using(开连接){}我全部用的标准方式。
      

  12.   

    外网出现问题后,我还怕是有写错了,搜了全部开连接的地方。换成如下方式SqlConnection con=null;
    try
    {
      using(con=new SqlConnection (连接串))
    {
      访问数据库
    }
    }
    catch
    {
    }
    finally
    {
      if (con!=null)
    {
    con.Close();
    }
    }
      

  13.   

    同意 sp1234(asp.net不是一个语言,是一个操作系统)
      

  14.   

    amandag(高歌) ,我的程序用的都是using开连接,逼得没办法,我又在finally中关了一次,没有一点效果,希望在以后我能找点问题所在,着实郁闷
      

  15.   

    SqlConnection con=null;
    try
    {
      using(con=new SqlConnection (连接串))
    {
      访问数据库
    }
    }
    catch
    {
    }
    finally
    {
      if (con!=null)
    {
    con.Close();
    con.Dispose();
    }
    }
    ---------------------
    conn.Close()只是关闭连接
    并没有释放资源
    con.Dispose()才是释放资源
    ---------------------------------
    还有 你用户数同时超过你有最大连接数,会不会出现错误呢
      

  16.   

    Server 不存在或访问被拒绝这个问题频繁出现,连接池满只是偶尔有非常少。就奇怪数据库一般都没问题,为什么会出现Server 不存在或访问被拒绝。
      

  17.   

    性能监视器看下SQL连接的情况,结合IIS流量分析
      

  18.   

    问一下,当连不上数据库时,
    telnet dbserver 1433看是否能连通,如果超时,我觉得时表示网络问题。有可能那一小段时间,网络真的断开了。
    还有,日志是否有记录了什么可疑的信息吗?
    打开管理工具的“性能”,对sql进行监控。