Symptomen
U wordt aangeraden om de ROLAP-opslagmodus van de relationele OLAP-opslagruimte voor een maateenheidgroep te gebruiken in een exemplaar van SQL Server 2014 of 2016 Analysis Services. Nadat u de waarde van de eigenschap MaxRolapOrConditions Geavanceerd hebt ingesteld op meer dan 256, voert u MDX-query's uit voor de groep maateenheid. In dit geval ontvangt u een foutmelding die er ongeveer als volgt uitziet:
#Error de DOM-parser kon de stream niet laden en parseren. URL: ' ' reden: ' de bewerking is afgebroken: Max-element-diepte beperking niet opgetreden. ' Bron: ' '. Bestandspositie: 0. Regel: 6.
Oorzaak
Analysis Services genereert een pseudo-SQL XML-document, dat vervolgens wordt geparseerd via een XML-opmaakmodel om de definitieve SQL-instructie te genereren die wordt verzonden naar de relationele bron. Bij het genereren van het eerste interne XML-document, of voorwaarden voor een kolom worden gegenereerd als geneste XML-elementen, zoals in het volgende voorbeeld:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
De eigenschap standaard MaxElementDepth voor een MSXML DOM-object dat wordt gebruikt door Analysis Services voor het maken van het XML-document, is 256 in MSXML 6.0. Wanneer de MaxROLAPOrConditions -configuratie wordt verhoogd, kan dit maximum worden overschreden door het gegenereerde XML-document.
Oplossing
Dit probleem is opgelost in de volgende cumulatieve update voor SQL Server:
Cumulatieve update 5 voor SQL Server 2016 RTM
Cumulatieve update 2 voor SQL Server 2016 SP1
Cumulatieve update 4 voor SQL Server 2014 SP2
Cumulatieve update 10 voor SQL Server 2014 SP1
Cumulatieve updates voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Meer informatie
Met deze oplossing wordt de werking van het tussenliggende XML-document gewijzigd, zodat elke extra of voorwaarde niet wordt genest in het voorgaande of XML-element. Daarom kunt u de MaxROLAPOrConditions niet meer dan 256. Er zijn echter nog praktische beperkingen voor het aantal of de voorwaarden die kunnen worden gebruikt. Naarmate het aantal of de voorwaarden groter wordt, kan de complexiteit van de gegenereerde SQL-instructie niet groter zijn dan de capaciteit van de relationele databaseserver, waardoor nieuwe foutvoorwaarden worden veroorzaakt. Hieronder ziet u voorbeelden van voorwaarden die nieuwe fouten kunnen veroorzaken:
-
Het maximum aantal parameters in een instructie overschreden
-
Het maximum aantal voorwaarden in een where -component te overschrijden
-
Fouten bij het parseren van de SQL-queryreeks
-
De maximumgrootte van een SQL-queryreeks overschrijden
We raden u daarom aan dat alle wijzigingen in de MaxROLAPOrConditions -configuratie worden gewaarschuwd.
Verwijzingen
Informatie over de terminologie die door Microsoft wordt gebruikt om software-updates te beschrijven.