Подтвердить что ты не робот

Службы отчетов SQL Server: как остановить запуск отчета при открытии

У нас есть отчеты служб отчетов SQL Server. Я тогда не писал, но я должен позаботиться о них.

Эти отчеты срабатывают при открытии в браузере, а с параметрами по умолчанию (условия поиска и ограничения пустые) они извлекают много данных, что происходит медленно. Клиент предпочел бы, чтобы отчет не генерировался до тех пор, пока пользователь не вводит параметры и не нажимает "отчет о просмотре"

К сожалению, я вообще не знаю SSRS - как остановить публикацию отчета при его открытии?


Подробная информация о том, как это сделать в развернутом отчете (по запросу Rihan Meij), выглядит следующим образом:

Нажмите на отчет, нажмите "Свойства" вверху. Возможно, вам придется немного подождать, потому что медленный отчет может быть запущен. Затем нажмите "Параметры" слева.

Для каждого параметра убедитесь, что установлен флажок "Запрос пользователя", и по крайней мере для одного параметра "Не имеет значения по умолчанию" не установлен. Нажмите "Просмотр" еще раз в левом верхнем углу (или вернитесь в папку и нажмите название отчета), чтобы просмотреть отчет, и обратите внимание, что отчет не запускается сразу.

В построителе отчетов вы можете сделать это через меню "Фильтр". Отмените выбор значений по меньшей мере из одного фильтра и сохраните отчет.

Можно ли также прекратить отчеты об увольнении при загрузке, когда у отчета нет параметров?

4b9b3361

Ответ 1

Я обнаружил, что мне нужно было установить хотя бы один из параметров отчета, чтобы не иметь по умолчанию, чтобы отчет не запускался.

Мне пришлось использовать эту конфигурацию (обратите внимание, что все 3 параметра, которые я оставил без по умолчанию, принимают Nulls, поэтому пользователи могут просто щелкнуть флажки Null):

[скриншоты отсутствуют]

чтобы пользователи могли увидеть это и сохранить отчет при автозавершении:

[скриншоты отсутствуют]

Ответ 2

Я сделал это, изменив запрос slighlty, чтобы потребовать параметры, когда он запущен.

Затем я опубликовал отчет на сайте отчета, указав, что этот параметр должен запрашивать у пользователя. Это приводит к тому, что отчет не выводит сервер sql на колени, когда пользователи просто открывают отчет, чтобы видеть.

Смотрите прикрепленный снимок экрана (изображение говорит тысячу слов, правильно:))

Ответ 3

Я установил значение по умолчанию для одного из моих параметров на значение -1, которое не существует (не допустимое значение параметра). Это не вызвало ошибку. Он просто устанавливает параметр в раскрывающийся список и предотвращает запуск отчета. Я не мог использовать значение по умолчанию NULL, потому что NULL выбирает все, и я хотел, чтобы пользователь целенаправленно делал выбор ALL (NULL) перед запуском отчета. Для вывода отчета требуется несколько минут, если выбрано ALL.

Ответ 4

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

Если вы используете ReportViewer, его можно установить для свойства ShowBody = "False". Затем в событии OnSubmittingParameterValues ​​измените свойство ShowBody на true. Тогда вам не нужны никакие дополнительные параметры или параметры без значения по умолчанию в отчете.

<rsweb:ReportViewer 
        ID="rv" 
        runat="server"  
        Width="100%" 
        Height="100%" 
        SizeToReportContent="false" 
        ZoomMode="PageWidth"
        KeepSessionAlive="true" 
        ProcessingMode="Remote"
        PromptAreaCollapsed="false" 
        InteractivityPostBackMode="AlwaysAsynchronous"
        AsyncRendering="true" 
        ExportContentDisposition="AlwaysInline"
        ShowReportBody="False"
        ShowPrintButton="false"
        OnSubmittingParameterValues="rv_SubmittingParameterValues"/>

И затем в методе rv_SubmittingParameterValues:

this.rv.ShowReportBody = true;

Ответ 5

Я нашел, что лучший способ - добавить параметр, который не допускает null, но не используется в отчете. Это останавливает его от рендеринга в начале, но не влияет на отчет.

Единственная нижняя сторона - если вы показываете отчет в средстве просмотра отчетов, у вас есть поле вверху, которое выглядит немного странно. Я уверен, что вы могли бы использовать некоторые С#/CSS, чтобы скрыть его.

Поскольку я не использую средство просмотра отчетов для отображения, только для визуализации на заднем конце это не влияет на меня.

Даже если вы используете средство просмотра отчетов, это полезно при разработке!

Ответ 6

Я сделал это, просто предоставив значение по умолчанию ключевому параметру, который не возвращает никаких результатов.

Ответ 7

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

Шаг 1: Предотвращение автоматического стрельбы

  • Удостоверьтесь, что параметр "Разрешить нулевое значение" не включен для необязательных параметров
  • Убедитесь, что для необязательных параметров нет значения по умолчанию

Шаг 2: сделайте параметры необязательными, не используя 'null'

  • Включить "Разрешить пустое значение" для необязательных параметров
  • Измените предложение where для необязательных параметров WHERE (@param="" OR column = @param)

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


обратите внимание: если в отчете указаны доступные значения, тогда вместо "" можно использовать любое значение, которое недействительно для вашей структуры таблицы, вы также можете использовать с другими типами данных (не строка) таким образом