【问题标题】:SSRS report is taking more time for 3000 recordsSSRS 报告需要更多时间来处理 3000 条记录
【发布时间】:2014-06-25 12:40:12
【问题描述】:

我正在尝试运行包含大约 5000 条记录的报告。 报告包含一个表格,表格中有 1 个分组。

我的存储过程需要 20 秒才能运行,但报告需要大约 3 分钟。 该报告大约有 120 页,每页大约有 30 条记录。

这是报告运行所需的时间还是我遗漏了什么。

将来我将在此报告中包含超过 50,000 条记录。所以,我需要知道是否有什么我可以做的。

我有以下代码将针对每一行中的特定列运行:

Function FormatTimer(ByVal seconds As Object) As Object Dim retVal As Object Dim days As Integer Dim hours As Integer Dim minutes As Integer

    If IsNothing(seconds) Then
        retVal = ""
    Else
        retVal = ""

        days = Abs(seconds) \ 86400
        seconds = seconds - days * 86400

        hours = Abs(seconds) \ 3600
        seconds = seconds - hours * 3600

        minutes = Abs(seconds) \ 60
        seconds = seconds - minutes * 60

        If days > 0 Then retVal = days.ToString() + "d "

        retVal = retVal + Format(hours, "00") + ":" + Format(minutes, "00") + ":" + Format(seconds, "00")
    End If

    FormatTimer = retVal

结束函数

当我删除此代码时,我的报告呈现速度更快,几乎 30 秒。 如果我在每一行中都使用这样的函数,它会对性能产生这么大的影响吗?

我的报告中也有 group by,如下所示:

Fields!PatientName.Value & " " & Fields!MRN.Value & " "& Fields!VisitNumber.Value

我还附上了我的报告的外观。

请告诉我可以做什么。

谢谢。

【问题讨论】:

  • 只是我的意见,但如果您真的需要创建一个 120 页的报告,请每天重新创建一个存储版本并提供过滤后的报告以供实时查看。我怀疑有人会想要阅读包含实时数据的完整 120 页报告。

标签: sql-server-2008 reporting-services ssrs-2008-r2


【解决方案1】:

确定生成报告所需时间的一个好方法是查询 Reporting Services 数据库。

在报告服务数据库中有一个名为 ExecutionLog 的表。此表记录了每个报告运行的详细信息,包括生成报告所需的时间。

更重要的是,该表提供了生成报告所需时间的详细细分......它记录了 TimeDataRetrieval、TimeProcessing 和 TimeRendering 的持续时间。

这将帮助您确定报表执行的哪个阶段花费的时间最多。

如果存储过程需要 20 秒才能恢复完整的数据集,那么时间很可能是由于在报表表格中完成的计算、查找等,或者仅仅是呈现这么多信息所需的时间。

编辑:查看执行日志表将帮助您确定问题,但它不会解决您的报告运行时间方面的问题。确定问题后,请尝试解决问题,或者在您对问题的确切原因有了更好的了解后将问题发回此处。

【讨论】:

  • 嗨,我刚刚添加了一个具有相同数据的示例报告,但这次我有 40,000 条记录。我只是渲染表中的数据。时间大大缩短到只有1分钟。因此,看来我需要处理报告并将所有处理删除到存储过程中。但是有 40,000 条记录,我有 2200 页。会有人阅读这么庞大的数据吗?
  • 这是你需要从你的用户那里找到的东西。您可能希望使其成为用户输入参数的交互式报告,您还需要更改存储过程以获取参数,但过滤数据将减少运行时间和返回的数据。 Filburt 的建议也值得研究。
【解决方案2】:

您是否尝试过使用分页符?只是一个想法。

您可以向矩形、数据区域或数据区域内的组添加分页符,以控制每页上的信息量。添加分页符可以提高已发布报表的性能,因为在查看报表时只需处理每页上的项目。当整个报表为单页时,必须先处理所有项目,然后才能查看报表。

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 2018-07-22
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多