Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SSRS报告需要更多的时间来记录3000条记录_Sql Server 2008_Reporting Services_Ssrs 2008 R2 - Fatal编程技术网

Sql server 2008 SSRS报告需要更多的时间来记录3000条记录

Sql server 2008 SSRS报告需要更多的时间来记录3000条记录,sql-server-2008,reporting-services,ssrs-2008-r2,Sql Server 2008,Reporting Services,Ssrs 2008 R2,我正在尝试运行一个有大约5000条记录的报告。 报告包含一个表,表中有1个分组 我的存储过程需要20秒才能运行,但报告大约需要3分钟。 这份报告大约有120页,每页大约有30条记录 这是报告运行所需的时间还是我遗漏了什么 在未来的报告中,我将有超过50000条记录。所以,我需要知道我是否能为此做些什么 我有以下代码,将为每行中的特定列运行: 函数FormatTimer(ByVal秒作为对象)作为对象 作为对象的Dim retVal 以整数表示的暗淡天数 将小时数设置为整数 将分钟设置为整数

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

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

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

在未来的报告中,我将有超过50000条记录。所以,我需要知道我是否能为此做些什么

我有以下代码,将为每行中的特定列运行:

函数FormatTimer(ByVal秒作为对象)作为对象 作为对象的Dim 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秒。 如果我在每一行中使用这样的函数,它会对性能产生如此大的影响吗

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

田野!PatientName.Value&“”&字段!MRN.Value&“”&字段!VisitNumber.Value

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

请告诉我可以做什么


谢谢。

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

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

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

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

如果存储的过程需要20秒才能返回完整的数据集,那么时间很可能是因为在报告的表中进行了计算、查找等,或者只是因为呈现了那么多信息所需的时间


编辑:查看executionlog表有助于确定问题,但它无法解决报告运行时间方面的问题。一旦发现问题,请尝试解决问题,或者在更好地了解问题的确切原因后,将问题发回此处。

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

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


这只是我的意见,但如果您真的需要创建一个120页的报告,请每天重新创建一个存储版本,并提供过滤后的报告以供实时查看。我怀疑有人会想阅读一份包含即时数据的120页完整报告。您好,我刚刚添加了一份包含相同数据的示例报告,但这次我有40000条记录。我只是渲染表中的数据。时间大大缩短到了1分钟。因此,似乎我需要处理报告并删除对存储过程的所有处理。但是有40000条记录,我有2200页。有人会阅读这些海量数据吗?这是你需要从用户那里了解的。您可能希望使其成为一个交互式报告,用户在其中输入参数,您还需要更改存储的过程以接收参数,但是过滤数据将减少运行时间和返回的数据。费尔伯特的建议也值得研究。