数据库中的记录数为四万多行记录,我写了一个查询语句取出前一万行。将取出的数据绑定至 DataGird 。一查询数据就引发了 OutOfMemoryException 异常,如果我将提取的记录数改为七千行就没有问题。服务器为 Windows Server 2003 企业版;四颗至强 3.66G CPU;内存为 3.25G;由于 Web 服务器使用的数据库与业务数据库不在同一服务器上,而且不能对业务数据库作任何的更改,所以也就不能创建存储过程,也就不能通过存储过程实现分页。我把 machine.config 文件中的 memoryLimit 修改为 80 也不行。请问如何解决该问题?

解决方案 »

  1.   

    服务器为 Windows Server 2003 企业版;四颗至强 3.66G CPU;内存为 3.25G;
    -----你这么power的服务器是Web服务器还是数据库服务器?你有两个数据库? Web 服务器使用的数据库?业务数据库?
      

  2.   

    web程序中,一次拿这么多数据,速度慢不说,而且不直观,建议采用分页。
      

  3.   

    如果楼主使的是dataset,那就改成datareader试试。
      

  4.   

    只能分页了还有一种保险的方法:捕获OutOfMemoryException异常后跳过此异常
      

  5.   

    还有一种不保险的方法:捕获OutOfMemoryException异常后跳过此异常不保险不是保险
      

  6.   

    服务器为 Windows Server 2003 企业版;四颗至强 3.66G CPU;内存为 3.25G;
    -----你这么power的服务器是Web服务器还是数据库服务器?你有两个数据库? Web 服务器使用的数据库?业务数据库?--------------------------------------------------------------------------是WEB服务器,数据库的服务内存是8G。
      

  7.   

    web程序中,一次拿这么多数据,速度慢不说,而且不直观,建议采用分页。
    -----------------------------------------------------------------------
    由于网络中有多台数据库服务器,而且数据源需要由用户选择,数据也由用户添加查询语句获取。所以,数据库服务器是不确定的,而且查询的数据也是不确定的。请问这样的话,如何将取出的数据分页呢?
      

  8.   

    可以在客户端动态生成分页语句来取数据
    -----------------------------------------
    请问对于该查询语句“select * from a, b where a.id = b.id”如何分页?
    由于网络中有多台数据库服务器,而且数据源不确定所以不能使用存储过程。