錯誤 (查詢優化器產生太多子資料庫)和 MDX 查詢在 SSAS 多維度實例中失敗
本文可協助您解決在 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 查詢會失敗並傳回下列錯誤訊息:
查詢優化器在查詢計劃中產生太多子庫
如果下列條件成立,就會發生此錯誤:
- 在單一階層層級或屬性上定義太多導出成員。
- 許多欄位或屬性成員都會放在每個軸上。 或者,許多欄位會放在 Microsoft Excel 中數據透視表的數據列或數據行上。
- 選取階層的所有成員都會包含在座標軸中。
- Excel 數據透視表中會開啟總計和小計。
原因
SSAS 公式引擎 (FE) 必須針對儲存引擎 (SE) 查詢 Subcube 或 Sonar Subcube 產生所有相關的 MDX 集合。 每個可產生之查詢的 SE 查詢子集數目有一個限制。 這是原廠設定。 目前在查詢計劃中,如果FE為查詢產生太多查詢子集,就會發生錯誤。
解決方法
若要避免此錯誤,請遵循下列最佳做法指導方針:
- 在 Excel 數據透視表中,關閉總計和小計。
- 從 Excel UI 中數據透視表的 [資料列] 或 [資料行] 軸中移除階層。
- 請勿在維度階層上定義太多導出成員(例如超過500個)。 相反地,在維度階層中擁有一般成員,並使用 MDX 範圍指派表達式(也稱為導出單元格)來取代這些導出成員的表達式。