SSRS查询分页

时间:2017-03-03 20:51:20

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

我正在从一张非常大的桌子创建一份报告。我创建了一个非常简单的报告,其中只有一个表。该表似乎确实允许分页,但是每个页面加载都需要很长时间,以至于它似乎在拉动整个表然后在本地分页。

我想我可能不得不自己将查询添加到查询中,但这不起作用,因为页面变量只能在页眉或页脚中使用

="SELECT * FROM MyTable OFFSET " & =Globals!PageNumber & " * 20 LIMIT 20"

之前我没有使用过SSRS所以我不确定是否有一些非常明显的错过。

任何有关如何正确执行此操作的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

在呈现报告之后,生成SSRS中的全局PageNumber。这就是为什么您无法在查询中使用它的原因。

目前还不清楚你的传呼是什么意思。一旦表格超过页面大小,SSRS就会自动为报告创建页面。如果你只想查询表格的一小部分,然后点击一个按钮来获得下一个块,那就没那么容易了。

但是,您可以在查询中使用ROW_NUMBER函数,并将其过滤到报表中的特定范围。但是,您必须在运行报表之前指定参数/过滤器的值,因为它使用这些值来处理数据集,然后继续呈现报表。

答案 1 :(得分:2)

如果您使用任何与分页相关的表达式,SSRS必须在显示第一页之前检索所有数据。

例如,如果您正在尝试做"第1页的X"在页脚中,SSRS必须先确定存在多少页面(通过检索和预渲染所有页面)才能显示第1页。

另外,如果您不需要所有列,请不要使用Select *。这将迫使SSRS将每列加载到其缓存中,即使它们并未全部使用。您可以减少数据检索执行时间。

最后,如果您有权访问SSRS报告数据库,则可以查看报告的执行统计信息,以查看性能问题发生的位置。 https://msdn.microsoft.com/en-us/library/ms159110.aspx