#sql-server-2008 #reporting-services #ssrs-2008-r2
#sql-server-2008 #службы отчетов #ssrs-2008-r2
Вопрос:
Я пытаюсь запустить отчет, который содержит около 5000 записей. Отчет содержит таблицу, и в таблице есть 1 группирующая группировка.
Выполнение моей сохраненной процедуры занимает 20 секунд, но отчет занимает около 3 минут. Объем отчета составляет около 120 страниц, на каждой странице около 30 записей.
Это время, которое потребуется для запуска отчета, или я что-то упускаю.
В будущем у меня будет более 50 000 записей в этом отчете. Итак, мне нужно знать, могу ли я что-нибудь для этого сделать.
У меня есть следующий код, который будет выполняться для определенного столбца в каждой строке:
Function FormatTimer(ByVal seconds As Object) As Object
Dim retVal As Object
Dim days As Integer
Dim hours As Integer
Dim minutes As Integer
If IsNothing(seconds) Then
retVal = ""
Else
retVal = ""
days = Abs(seconds) 86400
seconds = seconds - days * 86400
hours = Abs(seconds) 3600
seconds = seconds - hours * 3600
minutes = Abs(seconds) 60
seconds = seconds - minutes * 60
If days amp;> 0 Then retVal = days.ToString() "d "
retVal = retVal Format(hours, "00") ":" Format(minutes, "00") ":" Format(seconds, "00")
End If
FormatTimer = retVal
End Function
Когда я удаляю этот код, мой отчет отображается намного быстрее, почти на 30 секунд. Если я буду использовать подобные функции в каждой строке, сильно ли это повлияет на производительность?
У меня также есть group by в моем отчете, который выглядит следующим образом:
Поля!PatientName.Значение amp; » » amp; Поля!MRN.Значение amp; » » amp; Поля!VisitNumber.Value
Я также приложил, как будет выглядеть мой отчет.
Пожалуйста, дайте мне знать, что можно сделать.
Спасибо.
Комментарии:
1. Просто мое мнение, но если вам действительно нужно создать отчет на 120 страниц, ежедневно обновляйте сохраненную версию и предоставляйте отфильтрованные отчеты для просмотра в реальном времени. Я сомневаюсь, что кто-нибудь захочет прочитать полный отчет на 120 страниц с данными точно в срок.
Ответ №1:
Хороший способ определить время, необходимое для создания отчета, — это запросить базу данных служб Reporting Services.
В базе данных служб reporting services есть таблица, называемая ExecutionLog . В этой таблице записываются сведения о каждом запуске отчета, включая время, необходимое для создания отчета.
Что еще более важно, в таблице представлена подробная разбивка времени, необходимого для создания report…it записывает длительность для TimeDataRetrieval, TimeProcessing и TimeRendering.
Это поможет вам определить, какая фаза выполнения отчета занимает больше всего времени.
Если сохраненному процессу требуется 20 секунд, чтобы вернуть полный набор данных, то, скорее всего, это время связано либо с вычислениями, поисками и т. Д., выполняемыми в таблице отчета, Либо просто с временем, которое требуется для отображения такого количества информации.
Редактировать: просмотр таблицы executionlog поможет вам определить проблему, но это не решит вашу проблему в отношении времени, необходимого для запуска вашего отчета. Как только вы определите проблему, попробуйте решить ее или опубликуйте проблему здесь, когда у вас будет лучшее понимание того, что именно вызывает проблему.
Комментарии:
1. Привет, я только что добавил образец отчета с теми же данными, но на этот раз у меня 40 000 записей. Я просто отображаю данные в таблице. Время значительно сократилось до 1 минуты. Итак, кажется, что мне нужно поработать над отчетом и удалить всю обработку в сохраненный процесс. Но с 40 000 записей у меня 2200 страниц. Кто-нибудь прочитает эти огромные данные?
2. Это то, что вам нужно выяснить у ваших пользователей. Возможно, вы захотите сделать его интерактивным отчетом, в котором пользователи вводят параметры, вам также нужно будет изменить сохраненную процедуру, чтобы принимать параметры, но фильтрация данных сократит время выполнения и возвращаемые данные. То, что предложил Филберт, также стоит изучить.
Ответ №2:
Вы пробовали использовать разрыв страницы? просто мысль.
Вы можете добавить разрыв страницы для прямоугольников, областей данных или групп в областях данных, чтобы контролировать объем информации на каждой странице. Добавление разрывов страниц может повысить производительность опубликованных отчетов, поскольку при просмотре отчета необходимо обрабатывать только элементы на каждой странице. Когда весь отчет представляет собой одну страницу, все элементы должны быть обработаны, прежде чем вы сможете просмотреть отчет.