TL/DR版本:報告服務是而不是給你正確的RDL。
你的問題促使我進一步調查懷疑我已經對SSRS相當長的一段時間:在部署時報表參數可以在報表開發人員預期的行爲(或下載)報告定義。我之前注意到的一個相關場景:
- 使用參數創建報告。
- 第一次部署報告。
- 以某種方式更新報告參數。
- 再次部署相同的報告。
- 結果:參數設置爲而不是在服務器上成功更新。
- 從報告管理器中刪除報告。
- 再次部署報告(實際上與步驟2相同)。
- 結果:舉報參數爲已正確更新。
總之,如果您想更新已部署報表的參數設置,您首先需要將其刪除並部署,或直接通過報表管理器更新設置。
回到你的問題。你不會錯過任何東西,這似乎是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一個「隱藏」的元素。
我只是驗證了您的發現(2008年SSRS),並認爲我可能會回答你的第二個問題:SSRS確實不咳嗽了RDL的正確版本。它缺少關於參數的各種位,包括隱藏或不隱藏的元素。
有趣的是:如果你改變BIDS中的報告,並設置參數爲隱藏,該RDL 將改變,並有<Hidden>true</Hidden>
元素。
你的問題提到ssrs-2005,但你已經標記了ssrs-2008?無論哪種方式,我都在兩個版本中看到過這種行爲(但在2008年肯定)。 – Jeroen
服務器SSRS非常適合不修改.rdl。 RDL文件是用BIDS修改的,而不是由服務器修改的。即使從2005年升級到2008年,.rdl文件也不會更改,您仍然可以從SSRS獲取原始(2005).rdl。 –