当试图导出报表到excel时,网站加载了一段时间,我得到了“此页面无法显示。请确保网站地址是正确的”错误。
以下是一些平台细节:
报表本身有4-5个参数,调用一些视图和一个过程,并显示最多30列的120 K行。在SSMS中,无需过滤的整个报表可以在大约7秒内执行。SP网站可以很好的显示rdl的结果,报告显示的足够精细和快速。我还可以将结果导出到csv,xml,所有120 K行。但当涉及到出口到excel时,它就会陷入困境。
这就是它变得有趣的地方。
当使用一些参数或数据过滤调用时,报表就会很好地显示出来,并且可以毫不延迟地导出到excel。我已经测试了越来越多的行和excel导出工作,罚款高达50K行。导出的xlsx文件约为9MB。但是当我增加日期范围时,excel导出就会超时。
现在说说我试过的事。
导出到其他格式很好。只有EXCELOPENXML不起作用。
在rsreportserver.config中增加ProcessTimeout、ProcessTimeoutGcExtension的值甚至添加DatabaseQueryTimeout键都没有帮助。
增加executionTimeout和maxRequestLength键在web.config中的值也没有影响。
配置更改后,我重新启动Reporting服务。
我怀疑SQL 2012中存在10 is的excel导出错误,但是应该使用SP2来解决这个问题,它将应用于这个系统中。
另外,在显示错误消息的几分钟前,网站要求重新登录sharepoint网站。这发生在几分钟后,点击excel导出。在进行任何IIS配置更改之前,我希望确保sql侧的所有内容都是正确的。
有什么想法吗?
发布于 2016-11-07 09:03:19
经过几天的反复试验,我发现了这个问题的原因。
问题是在一个操作属性为"Go to URL“的列中,url由字符串连接表达式设置,从报表字段获取4个参数。显然,SSRS在导出到excel时,再次处理所有几百K的数据。csv和xml格式能够处理相同的报告,但excel抛出超时的原因对我来说仍然是个谜。我所能推测的是excel渲染器需要更多的处理时间来格式化单元格。
解决此问题的另一种方法可能是启用报表快照,因此报表数据将从缓存中使用,但我不确定excel导出是否仍会重新处理报表。
我通过添加具有相同数据的另一列解决了这个问题,但是将下面的表达式添加到列可见性属性中:
=(Globals!RenderFormat.Name="EXCELOPENXML")
因此,现在已成功地处理了带有参数的字符串操作,以在web视图中形成URL格式,但未在excel呈现程序中处理。
希望这能帮上忙。
https://stackoverflow.com/questions/39850526
复制相似问题