KB3208179 – ÅTGÄRD: MDX-fråga returnerar fel om värdet för MaxRolapOrConditions är större än 256 i SQL Server Analysis Services

Gäller för
SQL 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)

Symptom

Anta att du använder ROLAP-lagringsläget (relationell OLAP) för en måttgrupp i en instans av SQL Server 2014 eller 2016 Analysis Services. När du har angett värdet för den avancerade MaxRolapOrConditions-egenskapen till mer än 256 kör du MDX-frågor på den måttgruppen. I det här fallet får du felmeddelanden som liknar följande:

Obs

#Error DOM-tolkaren kunde inte läsa in och tolka strömmen. URL:'' Orsak: 'Åtgärden avbröts: begränsningen max-element-depth överträddes.' Källa:''. Filposition: 0. Linje: 6.

      

Orsak

Analysis Services genererar ett pseudo-SQL XML-dokument som sedan tolkas genom en XML-formatmall för att generera den slutliga SQL-satsen som skickas till relationskällan. När det första interna XML-dokumentet genereras, genereras ELLER-villkor för en kolumn som kapslade XML-element som i följande exempel:

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

Standardegenskapen MaxElementDepth för ett MSXML DOM-objekt som används av Analysis Services för att skapa XML-dokumentet är 256 i MSXML 6.0.

När MaxROLAPOrConditions-konfigurationen ökas kan därför det genererade XML-dokumentet överskrida det här maximala djupet.

Lösning

Det här problemet åtgärdas i följande kumulativa uppdatering för SQL Server:

Kumulativ uppdatering 5 för SQL Server 2016 RTM

Kumulativ uppdatering 2 för SQL Server 2016 SP1

Kumulativ uppdatering 4 för SQL Server 2014 SP2

     Kumulativ uppdatering 10 för SQL Server 2014 SP1

Om kumulativa uppdateringar för SQL Server

Om kumulativa uppdateringar för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

Senaste kumulativa uppdateringen för SQL Server 2016

Senaste kumulativa uppdateringen för SQL Server 2014

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Mer information

Den här korrigeringen ändrar hur det mellanliggande XML-dokumentet skapas, så att varje ytterligare ELLER-villkor inte kapslas i det tidigare OR XML-elementet. Därför kan du öka MaxROLAPOrConditions utöver 256. Det finns dock fortfarande praktiska begränsningar för antalet ELLER-villkor som kan användas.

När antalet ELLER-villkor ökar kan komplexiteten hos den SQL-instruktion som genereras överskrida relationsdatabasserverns kapacitet, vilket orsakar nya feltillstånd.

Följande är exempel på förhållanden som kan orsaka nya fel:

  • Överskridande av det maximala antalet parametrar i en instruktion
  • Överskrida det maximala antalet villkor i en where-sats
  • Fel vid tolkning av SQL-frågesträngen
  • Den maximala storleken på en SQL-frågesträng överskrids

Därför rekommenderar vi att du är försiktig när du justerar MaxROLAPOrConditions-konfigurationsvärdet.

Referenser

Läs mer om den terminologi som Microsoft använder för att beskriva programuppdateringar.