运行SSRS报告需要几分钟时间

时间:2013-02-20 15:48:18

标签: reporting-services

我有非常简单的SSRS报告,运行存储过程需要不到1秒。当我在本地服务器上上传时,该报告工作得很好。但是,在远程服务器(SQL Server 2012)上运行报告需要5-7分钟。其他关于远程服务器的报告工作得很好。有人可以帮帮我吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

您应该使用SQL事件探查器或ReportServer DB来检查哪个进程很慢。 您可以使用此SQL进行检查:

USE ReportServer
SELECT ReportPath,
       RequestType,
       Format,
       ReportAction,
       TimeDataRetrieval,
       TimeProcessing,
       TimeRendering,
       DATEDIFF(S, TimeStart, TimeEnd) AS TotalSeconds
FROM ExecutionLog2

其中TimeDataRetrieval是存储过程执行的时间+向ReportServer,TimeProcessing发送时间 - 它是在报告端进行分组,排序等所花费的时间,TimeRendering是用于渲染的时间。

然后当你知道为什么执行速度很慢时 - 你可以考虑修复方法(修复存储过程,添加索引,更改报告结构等)。

我遇到了导致参数嗅探(about parameters sniffing)的问题,为了防止这种情况,您不应该在查询中使用输入参数,如下所示:

CREATE PROCEDURE [dbo].[usp_MySP] @InputValue INT
AS
BEGIN
    DECLARE @SomeValue INT;
    SET @SomeValue = @InputValue;

    SELECT SomeColumn 
    FROM SomeTable
    WHERE SomeColumn = @SomeValue
END