2013-02-20 5 views
1

У меня довольно простой отчет SSRS, для выполнения хранимой процедуры требуется менее 1 секунды. Отчет отлично работает, когда я загружаю его на локальный сервер. Однако на удаленном сервере (SQL Server 2012) для запуска отчета требуется 5-7 минут. Другие мои отчеты на удаленном сервере работают хорошо. Кто-нибудь может мне помочь? Заранее спасибо!Занимает несколько минут для запуска отчета SSRS

+0

ваша локальная БД и удаленный SQL Server 2012 DB являются тоже самое ? (такие же данные?) –

+0

Да, у меня есть «свежая» копия БД на моей локальной машине – Serega

ответ

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 время, проведенное для рендеринга.

Затем, когда вы знаете, почему выполнение выполняется медленно, вы можете подумать о способах исправления (исправить хранимую процедуру, добавить индексы, изменить структуру отчета и т. Д.).

У меня была такая проблема, которая вызывает параметры нюхают (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 
Смежные вопросы