主题:[原创]SQLServer2005获取大数据集时内存不足FineReport报表软件的解决办法
SQLServer2005获取大数据集时内存不足FineReport[url=http://www.finereport.com/cn/functions.html]报表软件[/url]的解决办法
[b]一. 问题描述:[/b]
使用 SQL Server jdbc读取SQLServer2005中的大数据量表时,如数据量达到20万时,发生如下类似错误:
[img]http://www.finereport.com/forumimages/e82.png[/img]
[b]二. 原因:[/b]
发生该情况与sqlserver jdbc驱动的select Method有关。selectMethod分为direct和cursor。当使用direct时,驱动会一次性载入所有结果集到jvm内存中,因此造成了out of memory;而使用cursor时,会在服务器端创建一个cursor,因此不会占据客户端的大量内存。
注意:此问题只存在于MS SQLSERVER,其它关系型数据库无此问题
[b]三. 解决办法:[/b]
修改SQLServer2005 jdbc的URL:
jdbc:sqlserver://192.168.100.118:1433;databaseName=test;selectMethod=cursor
如下图:
[img]http://www.finereport.com/forumimages/e83.png[/img]
但这种方式会影响整个应用程序,可能引起其他普通情况的读取性能下降。
[b]一. 问题描述:[/b]
使用 SQL Server jdbc读取SQLServer2005中的大数据量表时,如数据量达到20万时,发生如下类似错误:
[img]http://www.finereport.com/forumimages/e82.png[/img]
[b]二. 原因:[/b]
发生该情况与sqlserver jdbc驱动的select Method有关。selectMethod分为direct和cursor。当使用direct时,驱动会一次性载入所有结果集到jvm内存中,因此造成了out of memory;而使用cursor时,会在服务器端创建一个cursor,因此不会占据客户端的大量内存。
注意:此问题只存在于MS SQLSERVER,其它关系型数据库无此问题
[b]三. 解决办法:[/b]
修改SQLServer2005 jdbc的URL:
jdbc:sqlserver://192.168.100.118:1433;databaseName=test;selectMethod=cursor
如下图:
[img]http://www.finereport.com/forumimages/e83.png[/img]
但这种方式会影响整个应用程序,可能引起其他普通情况的读取性能下降。