Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

徵狀

假設您在 SQL Server 2014 或2016分析服務的實例中,針對 [測度] 群組使用 [關聯式 OLAP (ROLAP)] 儲存模式。 將 MaxRolapOrConditions advanced 屬性的值設為大於256之後,就會在該量值群組上執行 MDX 查詢。 在這種情況下,您會收到如下所示的錯誤:

#Error DOM 解析器載入並分析資料流失敗。 URL: ' 原因: ' 操作已中止:違反最大元素深度限制。」 來源: ""。 檔案位置:0。 Line:6。

原因

Analysis Services 會產生偽 SQL XML 檔,然後透過 XML 樣式表單進行分析,以產生最後傳送至關係來源的 SQL 語句。 產生初始內部 XML 檔時,或欄的條件會以嵌套 XML 元素產生,如下列範例所示:

<OR> <Condition>column1 = value1</Condition>  <OR>   <Condition>column1 = value2</Condition>    <OR>     <Condition>column1 = value3</Condition>    </OR>  </OR></OR> 

Msxml DOM 物件的預設 MaxElementDepth 屬性是由 Analysis SERVICES 在 msxml 6.0 中建立 xml 256 檔所使用。因此,當 MaxROLAPOrConditions設定增加時,產生的 xml 檔可能會超過此最大深度。

解決方案

此問題已在下列 SQL Server 累積更新中修正:

    SQL Server 2016 RTM 的累積更新5

    SQL Server 2016 SP1 的累積更新2 

SQL Server 2014 SP2 累積更新4

SQL Server 2014 SP1 累計更新10

關於 SQL Server 的累計更新

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:

SQL Server 2016 的最新累計更新

SQL Server 2014 的最新累計更新

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

其他相關資訊

此修正程式會變更中間 XML 檔的產生方式,因此每個額外或條件不會嵌套在前一個或 XML 元素中。 因此,您可以增加256以外的MaxROLAPOrConditions 。 不過,對於可以使用的 OR 條件,仍有實際的限制。隨著或條件數增加,產生的 SQL 語句的複雜性可能會超過關系型資料庫伺服器的容量,從而導致新的錯誤情況。下列是可能導致新錯誤的條件範例:

  • 超過語句中的參數數目上限

  • 超過 where 子句中的最大條件數

  • 分析 SQL 查詢字串時的錯誤

  • 超過 SQL 查詢字串的大小上限

因此,建議您慎用任何對 MaxROLAPOrConditions 設定值所做的調整。

參考

瞭解 Microsoft 用於描述軟體更新的 術語

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。