SSRS报告花费了3000多条记录

时间:2014-06-25 12:40:12

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

我正在尝试运行一份包含大约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

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秒。 如果我在每一行中使用这样的函数,它会影响性能吗?

我的报告中也有一个小组,如下所示:

字段!PatientName.Value& " " &安培;菲尔兹!MRN.Value& " "&安培;领域!VisitNumber.Value

我还附上了我的报告的样子。

enter image description here

请让我知道可以做些什么。

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

如果存储的proc需要20秒才能恢复完整的数据集,那么时间可能是由于在报告表中完成的计算,查找等,或者只是渲染那么多信息所花费的时间。

编辑:查看执行日志表将帮助您确定问题,但它无法解决您的报告运行所需的时间问题。一旦确定问题,请尝试解决问题,或者在您更好地了解导致问题的原因时将问题发回此处。

答案 1 :(得分:0)

你尝试使用Page Break吗?只是一个想法。

  

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