Posted on 2010-06-22 20:35
FineReport——报表技术领跑者 阅读(642)
评论(0) 编辑 收藏 所属分类:
Java报表问题解答
SQLServer2005获取大数据集时内存不足FineReport报表软件的解决办法
一. 问题描述:
使用 SQL Server jdbc读取SQLServer2005中的大数据量表时,如数据量达到20万时,发生如下类似错误:
二. 原因:
发生该情况与sqlserver jdbc驱动的select Method有关。selectMethod分为direct和cursor。当使用direct时,驱动会一次性载入所有结果集到jvm内存中,因此造成了out of memory;而使用cursor时,会在服务器端创建一个cursor,因此不会占据客户端的大量内存。
注意:此问题只存在于MS SQLSERVER,其它关系型数据库无此问题
三. 解决办法:
修改SQLServer2005 jdbc的URL:
jdbc:sqlserver://192.168.100.118:1433;databaseName=test;selectMethod=cursor
如下图:
但这种方式会影响整个应用程序,可能引起其他普通情况的读取性能下降。