修改后的Reporting Services报告 - RDL不会更改?

时间:2012-10-15 17:04:33

标签: reporting-services ssrs-2008 rdl

我有一个Reporting Services 2005报告有错误:“参数UserID是只读的”。在做了一些研究后,我找到了一个有效的解决方案。我从Report Manager Web界面打开了报告,并对其进行了更改:

before

..对此:

after

此更改后,报告有效!太好了!

所以,我想我将下载修改后的RDL,以便我可以看到更改并将更正的RDL添加到我的源代码库中。所以,我下载了RDL:

Downloading the RDL

但我的差异工具告诉我RDL的“之前”版本与RDL的“之后”版本相同。我深信我的差异工具是错误的,我尝试了另一个。果然,RDL没有区别。

我错过了什么?更改是否反映在RDL以外的其他位置,或者Reporting Services是否没有咳嗽正确版本的RDL?在任何一种情况下,我如何获得正确版本的RDL?

谢谢。

1 个答案:

答案 0 :(得分:1)

TL / DR版本:Reporting Services 为您提供正确的RDL。


您的问题促使我进一步调查我已经对SSRS怀疑已有一段时间了:报告参数在部署(或下载)报告定义时可能会以意想不到的方式表现。我之前注意到的一个相关场景:

  1. 使用参数创建报告。
  2. 首次部署报告。
  3. 以某种方式更新报告参数。
  4. 再次部署相同的报告。
  5. 结果参数设置在服务器上成功更新。
  6. 从报告管理器中删除报告。
  7. 再次部署报告(实际上与步骤2相同)。
  8. 结果:报告参数 正确更新。
  9. 简而言之,如果您要更新已部署报告的参数设置,您首先需要将其删除然后进行部署,或直接通过报告管理器更新设置。

    回到你的问题。你没有遗漏任何东西,这似乎就像SSRS的行为方式(有意或无意)。 RDL schema有这个(缩写)片段:

    <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中更改报告并将参数设置为隐藏,则RDL 更改并具有<Hidden>true</Hidden>元素。