2012-10-15 98 views
1

我有一個Reporting Services 2005報告有一個錯誤:「參數用戶ID是隻讀的」。在做了一些研究之後,我發現了一個可行的解決方案。我打開從報表管理Web界面的報告,並改變了這個:修改的Reporting Services報告 - RDL不會更改?

before

..to這樣的:

after

此更改後,報告工作!大!

所以,我想我會下載修改後的RDL,以便我可以看到更改並將更正後的RDL存入我的源代碼庫。所以,我下載RDL:

Downloading the RDL

但是我比較工具,告訴我,該RDL版本「之前」等同於該RDL版「後」。深信我的差異工具是錯誤的,我嘗試了另一個。果然,RDL沒有任何區別。

我錯過了什麼?更改是否反映在RDL之外的其他位置,或者Reporting Services是否沒有咳出正確的RDL版本?無論哪種情況,我如何才能獲得正確版本的RDL?

謝謝。

+0

你的問題提到ssrs-2005,但你已經標記了ssrs-2008?無論哪種方式,我都在兩個版本中看到過這種行爲(但在2008年肯定)。 – Jeroen

+0

服務器SSRS非常適合不修改.rdl。 RDL文件是用BIDS修改的,而不是由服務器修改的。即使從2005年升級到2008年,.rdl文件也不會更改,您仍然可以從SSRS獲取原始(2005).rdl。 –

回答

1

TL/DR版本:報告服務是而不是給你正確的RDL。


你的問題促使我進一步調查懷疑我已經對SSRS相當長的一段時間:在部署時報表參數可以在報表開發人員預期的行爲(或下載)報告定義。我之前注意到的一個相關場景:

  1. 使用參數創建報告。
  2. 第一次部署報告。
  3. 以某種方式更新報告參數。
  4. 再次部署相同的報告。
  5. 結果:參數設置爲而不是在服務器上成功更新。
  6. 從報告管理器中刪除報告。
  7. 再次部署報告(實際上與步驟2相同)。
  8. 結果:舉報參數已正確更新。

總之,如果您想更新已部署報表的參數設置,您首先需要將其刪除並部署,或直接通過報表管理器更新設置。

回到你的問題。你不會錯過任何東西,這似乎是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>元素。

+0

我非常不同意這個「won。」。 RDL是報告定義。參數值不一定是報告定義的一部分。 .rdl給出了開始的默認值,但在此之後,這些都由SSRS來保持。當您考慮爲具有不同參數的報告設置多個訂閱的用戶時,這很有意義。如果.rdl被更新,它將繼續使用這些訂閱的用戶參數。 –

+0

@JamieF嗯,好點。儘管如此,這對我來說卻是意想不到的(「won」「)行爲;我期望(編輯)ReportParameter成爲報表定義的一部分,而不是最重要的,因爲當您在BIDS中創建/編輯報表時,它*實際上在RDL文件中。我會更新我的答案,並將「wonky」一詞改爲更多的語義:-) – Jeroen

相關問題