SQL Server 2008 Reporting Services медленные отчеты - PullRequest
7 голосов
/ 13 сентября 2011

У меня проблема в службах отчетов SQL Server 2008. Проблема в том, что отчет иногда выполняется слишком медленно (это занимает более 30 минут), хотя я взял запрос и выполнил его в SQL Server Management Studio, и он занял не более 25 секунд.

Запрос возвращает большую таблицу (около 5000 строк), и я использую ее для построения круговой диаграммы в отчете. Я попытался оптимизировать запрос так, чтобы он возвращал только 4 строки, но отчет снова был медленным.

Что меня смущает, так это то, что иногда отчет (с другим вводом) выполняется так же быстро, как и запрос (около 30 секунд), я подумал, что это может быть из-за небольшого числа пользователей, поэтому я попытался с некоторыми коллегами просмотреть его на в то же время, но отчеты все еще быстрые, я попытался изменить конфигурацию, но мне не повезло.

Я искал решение этой проблемы более двух месяцев, поэтому, если кто-нибудь сможет мне помочь в этом, я буду очень благодарен.

1 Ответ

11 голосов
/ 13 сентября 2011

Если у вас есть доступ к базе данных SQL Server ReportServer, выполните следующий запрос или аналогичный для представления ExecutionLog:

выберите TimeStart, TimeEnd, TimeDataRetrieval, TimeProcessing, TimeRendering, Статус, ReportID из журнала выполнения

Это обеспечит вам хорошую разбивку отчета (с другими параметрами). Обратите особое внимание на TimeRendering, TimeProcessing и TimeDataRetrieval. Большие или высокие значения для любого из этих столбцов покажут, где находится ваше узкое место.

Одна проблема, с которой я столкнулся в прошлом, - это когда вы возвращаете довольно большой набор данных в отчет (5000 строк достаточно для этого сценария), а затем вы используете встроенную фильтрацию ssrs, рендеринг очень медленный и это приведет к очень высокому значению TimeRendering. Весь рендеринг должен выполняться на уровне базы данных, группировка и фильтрация не будут работать хорошо, если будут выполняться большие объемы данных в самом отчете ssrs.

...