Sharepoint 集成 SSRS 报告 excel 导出失败
Sharepoint Integrated SSRS report excel export fails
尝试将报告导出到 excel 时,网站加载了一段时间,我收到 "This page can’t be displayed. Make sure the web address is correct" 错误。
以下是一些平台详细信息:
- SQL 带有 SP2 的服务器 2012
- SharePoint 2013
- 具有 Sharepoint 集成模式的 SS 报告服务
- Windows 服务器 2012 R2
报表本身有4-5个参数,调用一些视图和一个过程,最多显示12万行30列。没有过滤的整个报表在 SSMS 中可以在大约 7 秒内执行。 SP 网站可以很好地显示 rdl 的结果,报告显示足够快。我还可以将结果导出到 csv,xml,所有 120K 行。但是当涉及到导出到 excel 时,它卡住了。
这就是有趣的地方。
当使用一些参数或日期过滤进行调用时,报告会很容易生成,并且可以毫不延迟地导出到 excel。我已经测试了越来越多的行,并且 excel 导出工作正常,最多可达 50K 行。导出的 xlsx 文件约为 9MB。但是当我增加日期范围时,excel 导出超时。
现在谈谈我尝试过的事情。
导出为其他格式效果很好。只是 EXCELOPENXML 不起作用。
增加 ProcessTimeout、ProcessTimeoutGcExtension 的值,甚至在 [=] 中添加 DatabaseQueryTimeout 键44=]rsreportserver.config没有帮助。
增加 executionTimeout 和 maxRequestLength 键的值 web.config也没有效果。
配置更改后我重新启动了 Reporting Server 服务。
我怀疑 SQL 2012 中存在 10MB excel 导出错误,但应使用此系统中应用的 SP2 解决此问题。
另外,在显示错误消息前几分钟,网站要求重新登录 Sharepoint 站点。这发生在点击 excel 导出几分钟后。在进行任何 IIS 配置更改之前,我想确保一切都应该在 sql 端。
有什么想法吗?
经过几天的反复试验,我找到了这个问题的原因。
问题出在具有 "Go to URL" 的操作 属性 的列中,并且 url 是由字符串连接表达式设置的,从报告字段中获取 4 个参数。显然,SSRS 在导出到 excel 时重新处理了所有几百 K 的数据。
为什么 csv 和 xml 格式能够处理相同的报告,但 excel 抛出超时的原因对我来说仍然是一个谜。我只能推测 excel 渲染器需要更多处理时间来格式化单元格。
解决该问题的另一种方法可能是启用报告快照,因此将从缓存中消耗报告数据,但我不确定 excel 导出是否仍会重新处理报告。
我通过添加另一个具有相同数据的列解决了这个问题,但将下面的表达式添加到列可见性 属性:
=(Globals!RenderFormat.Name="EXCELOPENXML")
所以现在,带有参数的字符串操作在web视图中成功处理形成URL格式,但在excel渲染器中没有处理。
希望这对某人有所帮助。
尝试将报告导出到 excel 时,网站加载了一段时间,我收到 "This page can’t be displayed. Make sure the web address is correct" 错误。
以下是一些平台详细信息:
- SQL 带有 SP2 的服务器 2012
- SharePoint 2013
- 具有 Sharepoint 集成模式的 SS 报告服务
- Windows 服务器 2012 R2
报表本身有4-5个参数,调用一些视图和一个过程,最多显示12万行30列。没有过滤的整个报表在 SSMS 中可以在大约 7 秒内执行。 SP 网站可以很好地显示 rdl 的结果,报告显示足够快。我还可以将结果导出到 csv,xml,所有 120K 行。但是当涉及到导出到 excel 时,它卡住了。
这就是有趣的地方。
当使用一些参数或日期过滤进行调用时,报告会很容易生成,并且可以毫不延迟地导出到 excel。我已经测试了越来越多的行,并且 excel 导出工作正常,最多可达 50K 行。导出的 xlsx 文件约为 9MB。但是当我增加日期范围时,excel 导出超时。
现在谈谈我尝试过的事情。
导出为其他格式效果很好。只是 EXCELOPENXML 不起作用。
增加 ProcessTimeout、ProcessTimeoutGcExtension 的值,甚至在 [=] 中添加 DatabaseQueryTimeout 键44=]rsreportserver.config没有帮助。
增加 executionTimeout 和 maxRequestLength 键的值 web.config也没有效果。
配置更改后我重新启动了 Reporting Server 服务。
我怀疑 SQL 2012 中存在 10MB excel 导出错误,但应使用此系统中应用的 SP2 解决此问题。
另外,在显示错误消息前几分钟,网站要求重新登录 Sharepoint 站点。这发生在点击 excel 导出几分钟后。在进行任何 IIS 配置更改之前,我想确保一切都应该在 sql 端。
有什么想法吗?
经过几天的反复试验,我找到了这个问题的原因。
问题出在具有 "Go to URL" 的操作 属性 的列中,并且 url 是由字符串连接表达式设置的,从报告字段中获取 4 个参数。显然,SSRS 在导出到 excel 时重新处理了所有几百 K 的数据。 为什么 csv 和 xml 格式能够处理相同的报告,但 excel 抛出超时的原因对我来说仍然是一个谜。我只能推测 excel 渲染器需要更多处理时间来格式化单元格。
解决该问题的另一种方法可能是启用报告快照,因此将从缓存中消耗报告数据,但我不确定 excel 导出是否仍会重新处理报告。
我通过添加另一个具有相同数据的列解决了这个问题,但将下面的表达式添加到列可见性 属性:
=(Globals!RenderFormat.Name="EXCELOPENXML")
所以现在,带有参数的字符串操作在web视图中成功处理形成URL格式,但在excel渲染器中没有处理。
希望这对某人有所帮助。