我正在尝试运行SSRS报告。这是一个简单的报告,只是为了从一个有大约80K记录的表中呈现数据。
报告中未进行聚合或数据处理。有大约50列和19个报告参数。我只需要在报告中显示这50列(无枢轴)。
通常需要大约5分钟才能在我们的开发服务器上呈现此报告(非高峰时段)。与我们的生产服务器的情况相同,但是用户正在获得很多“内存不足”异常,并且还没有使用报告参数标准(这是我从用户那里得到的抱怨)。
我可以在本地过滤条件而不会出现任何问题,尽管渲染需要很长时间。
为什么渲染报告需要这么长时间,即使报告很简单?
当我在VS 2008上点击F5时报告运行正常,但是当我点击“预览”标签时,我不时会出现内存异常。
列的某些名称中包含“#”字符。如果我在报告中包含这样的列,则会抛出“内存不足异常”(特别是在预览模式下)。这有什么道理:SSRS不像列号“#”吗?例如。我的专栏名称是“KLN#”。
我在桌面上创建了一个非聚集索引,但这对我没什么帮助。
在预览模式下运行报告与在VS 2008上击中F5之间的区别是什么?即使花了5分钟,我按F5也没关系,但预览模式有问题。
重新设计的空间不大(因为这是一个简单的报告),也许我只能删除报告参数。
任何建议都将不胜感激。
答案 0 :(得分:1)
为什么要渲染这么长时间......? 我在桌面上创建了一个非聚集索引,但这对我没什么帮助。
因为(AFAIK)SSRS将在渲染之前构建报告的内存模型。知道SSRS将在创建报告时采取三个步骤:
您可以查看ExecutionLog2 View以查看每个步骤需要多长时间。步骤1可能已经相当快(秒),因此添加的索引不会解决瓶颈问题。可能第2步和第3步需要花费很多时间,并且需要大量的RAM。
SSRS不喜欢带#的列名?我的专栏名称是KLN#。
据我所知,这应该不是问题。删除该列的可能性就足够了以使报告再次可运行。
重新设计并不多(因为它是一个直接的报告),除了我可以删除报告参数。
SSRS不是正确的工具。因此,对于您的问题,没有真正的“解决方案”,只有替代方案和解决方法。
<强>解决方法:强>
<强>备选方案:强>
答案 1 :(得分:1)
除了已发布的答案以及有关报表设计器或报表管理器中预览的问题之外,还有另一种可能的解决方案:避免在第一个报表页面上显示太多数据!
可以通过分页到小记录数量来完成,即通过分页符自定义组或有时自动(参见done_merson的答案)或添加简单的封面页。 这些解决方案在开发阶段尤其有用,如果您计划将报告结果呈现为Excel或PDF。
我遇到了类似内存异常的情况,并且从未使用简单报告返回报告,其数据集包含大约70,000条记录。 查询在大约1-2分钟内执行,但报表设计器和我们的开发SSRS 2008R2服务器(报表管理器)都无法显示生成的报表预览。最后,我怀疑HTML预览是瓶颈,并通过添加带有简单文本框的封面来避免它。下一个报告执行大约需要2分钟,并成功显示了封面页面的HTML预览。将完整结果渲染到Excel只需要30秒。
希望这会对其他人有所帮助,因为如果您搜索SSRS内存异常,此页面仍然是最重要的帖子之一。
答案 2 :(得分:0)
尝试增加你的内存,请看这篇文章中的类似错误:
答案 3 :(得分:0)
我们遇到了类似的情况,如果可能的话,将#34;在一页上保持在一起&#34; Tablix属性/常规/分页符选项中的选项关闭,它工作正常。