2

エラーが発生した Reporting Services 2005 レポートがあります:「パラメータ UserID は読み取り専用です」。いくつかの調査を行った後、機能する解決策を見つけました。Report Manager の Web インターフェイスからレポートを開き、次のように変更しました。

前

..これに:

後

この変更の後、レポートは機能します。すごい!

そのため、修正した RDL をダウンロードして、変更を確認し、修正した RDL をソース コード リポジトリに取得できるようにします。そこで、RDL をダウンロードします。

RDL のダウンロード

しかし、私の diff ツールは、RDL の「前」バージョンが RDL の「後」バージョンと同一であることを教えてくれます。私の差分ツールが間違っていると確信して、別のツールを試しました。案の定、RDL に違いはありません。

私は何が欠けていますか?変更は RDL 以外の場所に反映されていますか、それとも Reporting Services が正しいバージョンの RDL を作成していませんか? どちらの場合でも、正しいバージョンの RDL を入手するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

2

TL/DR バージョン: Reporting Services が正しい RDL を提供していません。


あなたの質問により、SSRS についてかなり前から抱いていた疑いをさらに調査するようになりました。レポート定義を展開 (またはダウンロード) するときに、レポート パラメーターがレポート開発者にとって予期しない方法で動作する可能性があります。以前に指摘した関連するシナリオの 1 つ:

  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 で) 調査結果を確認したところ、2 番目の質問に対する答えがあると思います: SSRS は実際に RDL の正しいバージョンを吐き出していません。非表示かどうかの要素を含む、パラメーターに関するさまざまなビットが欠落しています。

面白いことに、BIDS でレポートを変更してパラメーターを非表示に設定すると、RDL変更され、<Hidden>true</Hidden>要素が含まれます。

于 2012-10-15T17:43:51.810 に答える