1

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

4

1 回答 1

3

您应该使用 SQL Profiler 或 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 是用于呈现的时间。

然后,当您知道执行速度慢的原因时 - 您可以考虑修复方法(修复存储过程、添加索引、更改报告结构等)。

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

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

    SELECT SomeColumn 
    FROM SomeTable
    WHERE SomeColumn = @SomeValue
END
于 2013-02-21T13:53:20.857 回答