当尝试将报告导出到Excel时,网站加载了一段时间,我得到了#34;此页面无法显示。确保网址正确无误#34;错误。
以下是一些平台详情:
报告本身有4-5个参数,调用一些视图和一个过程,并显示120K行,最多30列。没有过滤的整个报告可以在SSMS中执行大约7秒。 SP网站可以很好地显示rdl的结果,报表显示得很好而且足够快。我也可以将结果导出到csv,xml,它的所有120K行。但是当涉及到excel的导出时,它会被卡住。
现在这就变得有趣了。
使用某些参数或日期过滤进行调用时,报告非常简单,可以毫不拖延地导出到excel。我已经测试了越来越多的行和excel导出工作精细到大约50K行。导出的xlsx文件大约为9MB。但是当我增加日期范围时,excel导出会超时。
现在开始尝试的事情。
导出到其他格式可以正常工作。只是EXCELOPENXML无效。
增加 ProcessTimeout , ProcessTimeoutGcExtension 的值,甚至在 rsreportserver.config 中添加 DatabaseQueryTimeout 键没有帮助。
在 web.config 中增加 executionTimeout 和 maxRequestLength 键的值也没有效果。
我在配置更改后重新启动了Reporting Server服务。
我怀疑SQL 2012中有10MB excel导出错误,但应该用SP2解决,这个问题应该在这个系统中应用。
同样相关,在显示错误消息前几分钟,网站要求重新登录到sharepoint站点。这种情况发生在几分钟的点击excel导出后。我想确保在进行任何IIS配置更改之前,所有内容都应该在sql端。
有什么想法吗?
答案 0 :(得分:0)
经过几天的反复试验,我发现了这个问题的原因。
问题发生在一个动作属性为&#34的列中;转到URL"并且URL由字符串连接表达式设置,从报告字段中获取4个参数。显然,SSRS在导出到excel时会再次处理所有数百个K的数据。 csv和xml格式之所以能够处理相同的报告,但excel抛出超时仍然是一个谜。我可以推测的是,excel渲染器需要更多的处理时间来格式化单元格。
解决问题的另一种方法可能是启用报告快照,因此报告数据将从缓存中消耗,但我不确定excel导出是否仍会重新处理报告。
我通过添加另一个包含相同数据的列来解决此问题,但将下面的表达式添加到列可见性属性中:
=(Globals!RenderFormat.Name="EXCELOPENXML")
现在,成功处理带参数的字符串操作以在Web视图中形成URL格式,但不在excel渲染器中处理。
希望这有助于某人。