Параметр будет храниться как в хранимых процессах, так и в запросах через ssrs, поэтому они должны кэшироваться одинаково, хотя это будут 2 разных кэша.На вашем месте я бы начал с изучения журнала выполнения в базе данных сервера отчетов, чтобы выяснить, откуда возникла ваша проблема.
Вот скрипт, который покажет вам время, необходимое для получения данных, обработки и рендеринга.
select
reverse ( substring ( reverse ( el . ReportPath ), 1 , charindex ( '/' , reverse ( el . ReportPath ))- 1 )) as ReportName
, u . UserName as LastModBy
, coalesce ( cast ( el . parameters as varchar ( max )), '' ) as [Parameters]
,( select count (*) from executionlog2 tmp where tmp . reportpath = el . reportpath and tmp . username = el . username and tmp . reportaction = 'Render' and tmp . status = 'rsSuccess' group by tmp . ReportPath ) as UserCount60Day
, el . Format
, el . UserName
, el . ReportAction
, el . Status
, el .Source
, el . [RowCount]
, el . ExecutionId
, el . TimeDataRetrieval / 1000 as DataRetrieval
, el . TimeProcessing / 1000 as Processing
, el . TimeRendering / 1000 as Rendering
,( el . TimeProcessing + el . TimeRendering ) / 1000 as ProcessAndRender
, el . AdditionalInfo
, case
when datediff ( ss , el . TimeStart , el . TimeEnd ) >= 30
then 1
else 2
end as DisplayInRed
from
ExecutionLog2 el
join ReportServer . dbo . Catalog c
on c . Path = el . ReportPath
join ReportServer . dbo . Users u
on u . UserId = c . ModifiedByID
where
el . ReportAction = 'Render'
Также продолжайте работу профилировщика во время выполнения отчета, чтобы видеть, что происходит за кулисами.
Надеюсь, это поможет.