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.