Службы отчетов SQL-сервера: как остановить запуск отчета при открытии - PullRequest
28 голосов
/ 10 ноября 2008

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

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

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


Подробности того, как это сделать в развернутом отчете (согласно ответу Рихана Мейджа), следующие:

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

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

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

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

Ответы [ 7 ]

15 голосов
/ 17 ноября 2008

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

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

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

, чтобы пользователи увидели это и не допустили автозапуска отчета:

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

4 голосов
/ 24 июня 2015

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

3 голосов
/ 10 ноября 2008

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

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

2 голосов
/ 29 апреля 2013

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

Если вы используете 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;
1 голос
/ 03 декабря 2015

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

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

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

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

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

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


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

1 голос
/ 21 декабря 2012

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

1 голос
/ 29 августа 2012

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

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

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

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

...