Symptom
Anta att du använder det (ROLAP) lagrings läget för en mått grupp i en instans av SQL Server 2014 eller 2016 Analysis Services. När du har angett värdet för egenskapen MaxRolapOrConditions Advanced till mer än 256 kör du MDX-frågor på mått gruppen. I det här fallet får du fel meddelanden som ser ut ungefär så här:
#Error DOM-parsern kunde inte läsa in och parsa strömmen. URL: ' ' orsak: ' avbröts: Max-elementets djup begränsning har överskridits. Källa: ' '. Fil position: 0. Rad: 6.
Orsak
Analysis Services skapar ett pseudo-SQL XML-dokument, som sedan parsas genom XML-formatmallar för att generera det slutgiltiga SQL-uttrycket som skickas till Relations källan. När du skapar det ursprungliga interna XML-dokumentet eller villkor för en kolumn genereras 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>
Standard egenskapen MaxElementDepth för ett MSXML dom-objekt som används av Analysis Services för att bygga XML-dokumentet är 256 i MSXML 6.0. När MaxROLAPOrConditions -konfigurationen höjs kan det genererade XML-dokumentet överskrida detta maximala djup.
Lösning
Det här problemet är åtgärdat i den här kumulativa uppdateringen 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
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Mer information
Denna korrigering ändrar hur det mellanliggande XML-dokumentet genereras, så att alla ytterligare villkor inte är kapslade i föregående eller XML-element. Därför kan du öka MaxROLAPOrConditions bortom 256. Men det finns fortfarande praktiska begränsningar för de villkor som kan användas. Eftersom antalet eller villkoren ökar kan komplexa SQL-uttryck som genereras vara högre än kapaciteten för Relations databas servern, vilket orsakar nya fel. Följande är exempel på situationer som kan orsaka nya fel:
-
Fler än det maximala antalet parametrar i en instruktion
-
Överskrider maximalt antal villkor i en WHERE -sats
-
Fel vid parsning av SQL-frågesträng
-
Överskrider den maximala storleken på en SQL-frågesträng
Därför rekommenderar vi att du gör eventuella ändringar i MaxROLAPOrConditions -konfiguration svärdet med försiktighet.
Referenser
Lär dig mer om terminologin som används av Microsoft för att beskriva program varu uppdateringar.