【问题标题】:SSRS Query pagingSSRS 查询分页
【发布时间】:2017-07-24 02:45:55
【问题描述】:

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

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

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

我以前没有使用过 SSRS,所以我不确定是否有一些非常明显的东西我遗漏了。

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

【问题讨论】:

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


    【解决方案1】:

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

    例如,如果您尝试在页脚中执行“Page 1 of X”,则 SSRS 必须确定存在多少页面(通过检索和预渲染所有页面)才能显示第 1 页。

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

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

    【讨论】:

    • 谢谢!最终,我意识到 SSRS 对我需要做的事情来说太痛苦了,于是推出了我自己的解决方案。还有一些其他几乎不可能满足的要求。
    【解决方案2】:

    SSRS 中的全局PageNumber 在报告呈现后生成。这就是为什么你不能在查询中使用它。

    目前还不清楚分页的确切含义。一旦表格超出页面大小,SSRS 会自动为报告创建页面。如果您只想查询表的一小部分,然后单击一个按钮来获取下一个块,那么没有这样的现成可用的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2012-05-24
      • 2011-08-07
      • 2020-05-21
      • 1970-01-01
      相关资源
      最近更新 更多