Производительность SSRS с несколькими наборами данных - PullRequest
1 голос
/ 19 марта 2019

У меня есть два основных вопроса о производительности SSRS.Я нахожусь в процессе консолидации 10 отчетов SSRS (10 итоговых RDL и 10 детальных RDL, каждый отчет имеет ~ 4 таблицы).Каждый отчет содержит хранимую процедуру, чтобы получить результаты.Теперь мы объединили все таблики в один RDL и создали новый параметр, в котором пользователь может выбирать, какой отчет он хочет открыть, и, соответственно, этот табликс отображается через свойство видимости. Теперь с точки зрения производительности я хочу понять, что лучше.Вопросы ниже:

  1. После консолидации, в одном RDL у нас есть 10 наборов данных, охватывающих 10 различных процедур.Должен ли я объединить все процедуры в одну и запустить раздел процедуры в соответствии с выбором пользователем отчета из параметра с использованием условий IF Else. Пример Пользователь выбирает отчет A, затем в процедуре IF @report = A - Код для A-- ELSE IF @report = B - Код для B--.Если я сделаю это, смогу ли я сохранить кэш для каждого из 10 отчетов.,Является ли хорошей идеей объединить все подробные Табликсы в один и показать / скрыть Табликс согласно пользовательскому выбору отчета из параметра отчета. Обычно я передаю имя отчета в качестве параметра через свойство Action, а затем показываю / скрываю таблицы с условиями IIF.ИЛИ я должен хранить 10 разных RDL для подробных отчетов.У меня есть эта опция открыта.Что будет лучше для производительности.

1 Ответ

1 голос
/ 19 марта 2019

что я хотел бы сделать - предполагая, что 10 RDL выполняют 10 различных хранимых процедур, назначьте каждой хранимой процедуре скрытый параметр.давайте назовем это @report_number (например).Таким образом, для первого отчета в хранимой процедуре добавьте предложение where для включения and @report_number = 1, что технически должно остановить хранимую процедуру, как только она увидит, что передано другое число (скажем, 2 для отчета 2) ... и так далее, и так далее..

@report_number назначается в отдельном наборе данных.
например,

report1 - значение = 1

report2 - значение = 2

,

.

.

report10 - значение = 10

, поэтому, когда пользователь запускает отчет 1, значение 1 для @report_number передается в этот набор данных... остальные наборы данных не должны запускать связанную с ним процедуру, поскольку они не будут иметь ожидаемого значения в предложении where.

Надеюсь, что это имеет смысл.

...