Reporting Services состоит из трех этапов в создании отчета:
- извлечения данных (выполнение запросов для возврата результатов набора данных)
- обработки (группировки и объединения возвращаемых данных в соответствии с доклада макет)
- Rendering (генерирование выбранного выхода, например HTML, Excel)
Если ваш запрос возвращает данные за ~ 20 секунд, но отчет занимает 10 минут для рендеринга, то основная проблема связана со скоростью обработки отчета (рендеринг редко является узким местом производительности), как вы правильно приняли. Лучший способ повысить производительность - отключить загрузку как можно большей части агрегации в исходную базу данных, переписав свой запрос, чтобы выполнить агрегацию. Платформа базы данных обычно намного быстрее при агрегировании данных, чем в службах Reporting Services. В идеале вы хотите вернуть минимальный объем данных, необходимых для отчета, чтобы иметь как можно меньше обработки.
Если у вас есть доступ к базе данных ReportServer, выполнить этот запрос, чтобы подтвердить, где узкое место:
SELECT ItemPath, Format, TimeStart, TimeEnd, TimeDataRetrieval, TimeProcessing, TimeRendering, [Status], ByteCount, [RowCount]
FROM ExecutionLog3
WHERE ItemPath LIKE '%My Report Name%'
TimeDataRetrieval, TimeProcessing и TimeRendering должны дать вам четкое представление о том, где проблема. Если проблема связана с TimeProcessing, попробуйте переписать запрос, чтобы уменьшить данные для отчета, а также просмотрите possible design issues, чтобы узнать, применимо ли какое-либо из них.
Благодарим вас за консультацию ... Основная проблема с обработкой отчета - использование групп столбцов и связанного с ними поворота, который сопровождает эти группы. Я повторно написал запрос для поворота в связанной хранимой процедуре, однако производительность снижалась настолько низко, что я даже не смог придумать время, которое теперь потребовалось для запроса данных; Я отказался от запроса, прежде чем он вернется! Я использовал команду PIVOT, а также сделал поворот вручную. – jasonc24
Запрос на самом деле довольно прост, и, помимо поворота результирующего набора, не происходит многого. Это двухстоечное внутреннее соединение - ничего необычного. Однако в отчете есть много «логики». Такие вещи, как цветные кодирующие ячейки, показывающие/скрывающие столбцы на основе других полей, гиперссылок и т. Д. Насколько эти факторы влияют, в отличие от самой группировки столбцов? – jasonc24
Знаете ли вы, что производительность других отчетов на этом сервере? Просто пытайтесь работать, если у вас есть проблема с сервером или проблема с отчетами. – Nathan