錯誤 (查詢優化器產生太多子檔) ,而 SSAS 多維度實例中的 MDX 查詢失敗

本文可協助您解決在 Microsoft SQL Server Analysis Services (SSAS) 多維度實例上執行多維度表達式 (MDX) 查詢時所發生的問題。

適用於:SQL Server 2012 Analysis Services、SQL Server 2014 Analysis Services、SQL Server 2016 Analysis Services、SQL Server 2017 Analysis Services Windows、SQL Server 2019 Analysis Services Windows
原始 KB 編號: 4533057

徵狀

當您在 Microsoft SQL Server Analysis Services (SSAS) 多維度實例上執行多維度表達式 (MDX) 查詢時,MDX 查詢會失敗並傳回下列錯誤訊息:

查詢優化器在查詢計劃中產生太多 Subcube

如果下列條件成立,就會發生此錯誤:

  • 單一階層層級或屬性上定義了太多導出成員。
  • 許多欄位或屬性成員都會放在每個軸上。 或者,許多欄位會放在 Microsoft Excel 中數據透視表的數據列或數據行上。
  • 所選階層的所有成員都會包含在軸中。
  • 總計和小計會在 Excel 數據透視表中開啟。

原因

SSAS 公式引擎 (FE) 必須為記憶體引擎產生所有相關的 MDX 集合, (SE) Query subcube 或 Sonar subcube。 每個查詢可以產生的 SE 查詢 Subcube 數目有一個限制。 這是原本設計的做法。 目前在查詢計劃中,如果FE為查詢產生太多查詢子檔,就會發生錯誤。

解決方案

若要避免此錯誤,請遵循下列最佳做法指導方針:

  • 在 Excel 數據透視表中,關閉總計和小計。
  • 從 Excel UI 中數據透視表的數據列或數據行軸移除階層。
  • 請勿定義太多導出成員 (例如,維度階層上超過 500) 。 相反地,維度階層中有一般成員,並使用 MDX 範圍指派表示式 (也稱為導出數據格) 來取代這些導出成員的表達式。