Reporting services 在SSRS中使用行组表达式导致预览运行非常慢

Reporting services 在SSRS中使用行组表达式导致预览运行非常慢,reporting-services,ssrs-tablix,ssrs-2016,Reporting Services,Ssrs Tablix,Ssrs 2016,我有一个分阶段的报告,有5行组。每一个都使用一个表达式作为分组的值。用户最多可为5个不同的参数选择一个值,并根据这些参数对报告进行分组 使用某些参数组合,报表可能需要2分钟以上才能在Visual Studio的预览窗格中运行。当我将报告部署到SSRS服务器时,相同的参数组合将在10秒或更短的时间内运行。出于好奇,我创建了一份报告副本,从每个行组中删除了表达式,并指定了一个字段进行分组。在这种情况下,它的预览速度与在服务器上查看时一样快 有人知道这里发生了什么吗 我目前正在使用Visual Stu

我有一个分阶段的报告,有5行组。每一个都使用一个表达式作为分组的值。用户最多可为5个不同的参数选择一个值,并根据这些参数对报告进行分组

使用某些参数组合,报表可能需要2分钟以上才能在Visual Studio的预览窗格中运行。当我将报告部署到SSRS服务器时,相同的参数组合将在10秒或更短的时间内运行。出于好奇,我创建了一份报告副本,从每个行组中删除了表达式,并指定了一个字段进行分组。在这种情况下,它的预览速度与在服务器上查看时一样快

有人知道这里发生了什么吗


我目前正在使用Visual Studio Enterprise Update 3。

首先,有一点很明显,如果您在开发机器中运行报表,它将不会具有与服务器相同的计算能力。即使您从服务器上运行VS,它也不会像已部署的报告那样运行得那么快

正如您可能注意到的那样,性能缓慢的原因是分组表达式。看来你的报告要花很长时间来处理,所以请在帖子中查看这篇文章。我复制并粘贴了下面的一段:

Tablix数据区域中的许多嵌套和相邻组级别可以 影响报表处理性能。考虑两者的水平 分组、组实例数和聚合的使用 在分组、筛选和排序后需要求值的函数 表达式被应用

我建议您尝试在SQL级别的数据源中执行分组,您还可以向查询传递参数以在那里设置所需的分组


让我知道这是否有帮助

我意识到这是一个老问题,但也许这会对你有所帮助

我遇到了与您描述的类似的症状,归结起来就是在分组语句中使用动态字段。显然,任何其他语句都可以毫无疑问地使用动态字段,但分组会导致巨大的性能损失

这概述了症状和原因

我不知道它是否在那个特定的链接中,但我读到了一些关于ReportViewer控件在呈现为HTML时有一个bug的内容,这个bug只在控件在.Net 4.0或更高版本下运行时才会发生。在.NET3.5中,性能与在报表查看器应用程序中运行RDL时几乎相同

如果您能够做到这一点,让报表查看器组件工作的最快方法是让IIS使用的应用程序池在.Net 2.0(或3.5,如果有该选项,因为它们基本上是相同的)下运行

如果您的应用程序将.Net 4.0或更高版本用于其他功能,那么除了重写报表以从分组中删除动态引用之外,我想不出多少,但这会显著降低报表的交互性(表行/列中没有展开/折叠选项)


作为参考,我有一个报告,其中执行查询大约需要2分钟,然后,如果我在SSRS中加载RDL,几乎会立即呈现。使用.Net 2.0中的ReportViewer控件渲染的同一个报表需要大约2分钟30秒才能完全渲染。使用完全相同的代码,但将应用程序池更改为使用.Net 4.0,该报告已经“呈现”了大约15分钟,但仍然没有返回。

发布代码可能有用?该报告实际上是在使用SSAS表格模型。基本上,报告中有三个参数,根据用户的选择,报告是如何分组的。我遵循了这家伙发布的模式()。一旦将MDX组装起来,它将在大约2秒的时间内运行,然后再花2-4分钟将报告组装起来。结果报告的大部分时间在2到4页之间。我知道我在这里没有付出太多,我希望有人以前见过这种行为。