現象
たとえば次のようなシナリオを考えてみます。
- Microsoft SharePoint リストまたはドキュメント ライブラリのMicrosoft SQL Server Reporting Services 2008 R2 (SSRS 2008 R2) または Microsoft SQL Server Reporting Services 2012 (SSRS 2012) レポートがあります。
- レポートでは、組み込みのSQL Server Reporting Services SharePoint List データ拡張機能が使用されます。
- SharePoint リストまたはドキュメント ライブラリに基づくデータセット クエリを作成し、レポート デザイナーでクエリを実行します。
- レポートは、SharePoint リストまたはドキュメント ライブラリをホストする SharePoint ファームに展開します。
このような場合、データセット クエリは、レポート デザイナーで SharePoint ファームとは異なる結果を返します。
たとえば、SharePoint で新しいビューを作成し、ドキュメント ライブラリで [フォルダービューなしですべてのアイテムを表示] オプションを選択します。 新しいビューをドキュメント ライブラリの既定のビューとして設定します。 このような場合、レポートは SharePoint ファーム内のレポート デザイナーとは異なるデータを返します。
メモ レポートを SharePoint サイトに展開すると、ドキュメント ライブラリの最上位のフォルダーとファイルのみが返されます。 ただし、レポート デザイナーは、フォルダーの場所に関係なく、既定のビューの変更を反映するすべてのファイルを返します。
原因
この問題は、SharePoint がリストと同じファームでレポートを実行するときに、SSRS 2008 R2 または SSRS 2012 によって取得されるさまざまなコード パスが原因で発生します。 ローカル SharePoint ファームがレポートを実行すると、SPLocalConnection パスを使用してリストが取得されます。 このパスは、SOAP 呼び出しなしで SharePoint リストから直接読み取り、既定のビュー構成なしでリスト情報のローカル コピーを作成します。 したがって、SPLocalConnection パスには、既定のビューの変更は反映されません。
ただし、レポート デザイナーがレポートを実行すると、レポートでは SPRemoteConnection パスが使用されます。 このパスでは 、GetListCollection 関数に似た SOAP 呼び出しが使用されます。 この関数は、ローカル接続ではなくリモート HTTP 接続を介してサイトにアクセスします。 そのため、変更は既定のビュー構成に反映されます。
回避策
この問題を回避するには、以下のいずれかの方法を使用します。
ネイティブ モードのレポート サーバーにレポートを展開し、ネイティブ モードのレポート サーバーからレポートを実行します。
メモ SharePoint でレポートを表示する必要がある場合は、ネイティブ モードのレポート ビューアー Web パーツを SharePoint にインストールし、Reporting Servicesのネイティブ インスタンスからレポートを呼び出します。
SharePoint Web パーツを使用してネイティブ モード レポートを表示および探索する方法の詳細については、次の MSDN Web サイトを参照してください。
レポートを展開したファームからアクセスできる別の SharePoint ファームに SharePoint リストまたはドキュメント ライブラリを展開します。 そのため、ローカル ファーム内のレポートは、リモートでリストにアクセスできます。
XML データ拡張機能を使用して、SharePoint List データ拡張機能を使用せずに XML クエリを作成します。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。