徵狀
請試想下列案例:
-
您有 microsoft SQL Server Reporting Services 2008 R2 (SSRS 2008 R2),或是 microsoft SQL Server Reporting Services 2012 (SSRS 2012)報告適用于 Microsoft SharePoint 清單或文件庫。
-
報表使用內建的 SQL Server Reporting Services SharePoint 清單資料延伸。
-
您建立以 SharePoint 清單或文件庫為基礎的資料集查詢,然後在報表設計工具中執行查詢。
-
您可以將報表部署到託管 SharePoint 清單或文件庫的 SharePoint 伺服器陣列。
在這種情況下,資料集查詢會在報表設計工具中傳回與 SharePoint 伺服器陣列中不同的結果。例如,您在 SharePoint 中建立新的視圖,您可以在其中選取文件庫中的 [ 顯示所有專案,但不顯示資料夾 ] 視圖選項。 您可以將新的視圖設定為文件庫的預設視圖。 在這種情況下,報表會在 SharePoint 伺服器陣列中傳回與報表設計工具中不同的資料。注意如果您將報表部署到 SharePoint 網站,則只會傳回最上層資料夾和文件庫的檔案。 不過,無論資料夾位置為何,報表設計工具都會傳回反映預設視圖的所有檔案。
原因
發生這個問題的原因是,當 SharePoint 在與清單相同的伺服器陣列中執行報表時,由 SSRS 2008 R2 或 SSRS 2012 所採取的不同程式碼路徑。 當本機 SharePoint 伺服器組執行報表時,會使用 SPLocalConnection 路徑來檢索該清單。 路徑直接從 SharePoint 清單讀取(不含 SOAP 呼叫),並建立清單資訊的本機複本,而不使用預設的視圖設定。 因此, SPLocalConnection 路徑不會反映預設視圖中的變更。 不過,報表設計者執行報表時,報表會使用 SPRemoteConnection 路徑。 此路徑使用與 GetListCollection 函數類似的 SOAP 呼叫。 這個函數透過遠端 HTTP 連線(而不是本機連線)來存取網站。 因此,所做的變更會反映在預設的視圖配置中。
因應措施
若要解決這個問題,請使用下列其中一個方法:
-
將報表部署到原生模式報表伺服器,然後從原生模式報表伺服器執行報表。 注意: 如果您必須在 SharePoint 中查看報表,請在 SharePoint 中安裝原生模式報表檢視器網頁元件,然後從您的本機報表服務實例呼叫報表。如需有關如何使用 SharePoint 網頁元件來查看和探索原生模式報告的詳細資訊,請移至下列 MSDN 網站:
-
將 SharePoint 清單或文件庫部署到可供您已部署報表之伺服器陣列存取的其他 SharePoint 伺服器組。 因此,本機伺服器陣列中的報表可以遠端存取清單。
-
使用 XML 資料延伸建立 XML 查詢,而不使用 SharePoint 清單資料延伸。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。