Измененный отчет служб Reporting Services - RDL не меняется?

У меня есть отчет Reporting Services 2005 с ошибкой: «Параметр UserID доступен только для чтения». Проведя небольшое исследование, я нашел решение, которое сработало. Я открыл отчет в веб-интерфейсе диспетчера отчетов и изменил его:

до

..к этому:

после

После этого изменения отчет работает! Здорово!

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

Загрузка RDL

Но мои инструменты сравнения говорят мне, что версия RDL «до» идентична версии RDL «после». Убедившись, что мой инструмент сравнения ошибочен, я попробовал другой. Разумеется, в RDL нет никакой разницы.

Что мне не хватает? Отражено ли изменение где-то в другом месте, кроме RDL, или службы Reporting Services не подбирают правильную версию RDL? В любом случае, как мне получить правильную версию RDL?

Спасибо.


person DWRoelands    schedule 15.10.2012    source источник
comment
В вашем вопросе упоминается ssrs-2005, но вы пометили его как ssrs-2008? В любом случае, я видел такое поведение в обеих версиях, я думаю (но точно в 2008 году).   -  person Jeroen    schedule 15.10.2012
comment
SSRS, сервер, очень хорошо умеет не изменять .rdl. Файлы RDL изменяются с помощью BIDS, а не сервером. Даже при обновлении с 2005 на 2008 файлы .rdl не изменяются, и вы все равно можете получить исходный (2005 г.) .rdl из SSRS.   -  person Jamie F    schedule 15.10.2012


Ответы (1)


Версия TL / DR. Службы Reporting Services не предоставляют вам правильный RDL.


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

  1. Создайте отчет с параметрами.
  2. Разверните отчет впервые.
  3. Обновите каким-либо образом параметры отчета.
  4. Разверните тот же отчет еще раз.
  5. Результат: настройки параметров не успешно обновлены на сервере.
  6. Удалите отчет из диспетчера отчетов.
  7. Разверните отчет еще раз (аналогично шагу 2).
  8. Результат: параметры отчета обновлены правильно.

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

Вернемся к вашему (-ым) вопросу (-ам). Вы ничего не упускаете, это просто похоже на то, как SSRS ведет себя (задумано или нет). В схеме RDL есть этот (сокращенный) фрагмент:

<xsd:complexType name="ReportParameterType">
    <xsd:choice minOccurs="1" maxOccurs="unbounded">
        <xsd:element name="DataType">
            <!-- abbreviated -->
        </xsd:element>
        <xsd:element name="Nullable" type="xsd:boolean" minOccurs="0"/>
        <xsd:element name="DefaultValue" type="DefaultValueType" minOccurs="0"/>
        <xsd:element name="AllowBlank" type="xsd:boolean" minOccurs="0"/>
        <xsd:element name="Prompt" type="xsd:string" minOccurs="0"/>
        <xsd:element name="ValidValues" type="ValidValuesType" minOccurs="0"/>
        <xsd:element name="Hidden" type="xsd:boolean" minOccurs="0"/>
        <xsd:element name="MultiValue" type="xsd:boolean" minOccurs="0"/>
        <xsd:element name="UsedInQuery" minOccurs="0">
    </xsd:choice>
    <xsd:attribute name="Name" type="xsd:normalizedString" use="required"/>
</xsd:complexType>

Итак, для вашего ReportParameter должен быть элемент «Скрытый».

Я только что проверил ваши выводы (в SSRS 2008) и думаю, что у меня есть ответ на ваш второй вопрос: SSRS действительно не выкладывает правильную версию RDL. В нем отсутствуют различные биты о параметрах, в том числе элемент, скрытый или нет.

Забавно: если вы измените отчет в BIDS и установите для параметра значение hidden, RDL будет изменен и будет содержать элемент <Hidden>true</Hidden>.

person Jeroen    schedule 15.10.2012
comment
Я, соответственно, не согласен с этой шаткостью. RDL - это определение отчета. Значения параметров не обязательно являются частью определения отчета. .Rdl дает начальные значения по умолчанию, но после этого они остаются в SSRS. Это имеет большой смысл, когда вы думаете о пользователе, который настраивает несколько подписок на отчет с разными параметрами. Если .rdl обновлен, он продолжит использовать параметры пользователя для этих подписок. - person Jamie F; 15.10.2012
comment
@JamieF Хм, хороший момент. И все же для меня это было неожиданным (шатким) поведением; Я ожидаю (ред), что ReportParameter будет частью определения отчета, не в последнюю очередь потому, что он находится фактически в файле RDL, когда вы создаете / редактируете отчет в BIDS. Я обновлю свой ответ и заменю слово «шаткий» на что-то более смысловое :-) - person Jeroen; 15.10.2012