Sharepoint集成SSRS报告excel导出失败

时间:2016-10-04 10:58:10

标签: sql-server sharepoint reporting-services ssrs-2012 rdl

当尝试将报告导出到Excel时,网站加载了一段时间,我得到了#34;此页面无法显示。确保网址正确无误#34;错误。

以下是一些平台详情:

  • 带有SP2的SQL Server 2012
  • Sharepoint 2013
  • 具有Sharepoint集成模式的SS Reporting Services
  • Windows Server 2012 R2

报告本身有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端。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过几天的反复试验,我发现了这个问题的原因。

问题发生在一个动作属性为&#34的列中;转到URL"并且URL由字符串连接表达式设置,从报告字段中获取4个参数。显然,SSRS在导出到excel时会再次处理所有数百个K的数据。 csv和xml格式之所以能够处理相同的报告,但excel抛出超时仍然是一个谜。我可以推测的是,excel渲染器需要更多的处理时间来格式化单元格。

解决问题的另一种方法可能是启用报告快照,因此报告数据将从缓存中消耗,但我不确定excel导出是否仍会重新处理报告。

我通过添加另一个包含相同数据的列来解决此问题,但将下面的表达式添加到列可见性属性中:

=(Globals!RenderFormat.Name="EXCELOPENXML")

现在,成功处理带参数的字符串操作以在Web视图中形成URL格式,但不在excel渲染器中处理。

希望这有助于某人。