Simptome
Să presupunem că utilizați modul de stocare OLAP (ROLAP) relațional pentru un grup de măsuri într-o instanță a SQL Server 2014 sau 2016 Analysis Services. După ce setați valoarea proprietății complex MaxRolapOrConditions la mai mult de 256, executați interogări MDX pe acel grup de măsuri. În acest caz, primiți erori care seamănă cu următoarele:
#Error parser-ul DOM nu a reușit să încarce și să analizeze fluxul. URL: ' ' reason: ' operațiunea a fost anulată: restricția Max-element-adâncime încălcată. ' Sursă: ' '. Poziție fișier: 0. Linie: 6.
Cauză
Analysis Services generează un document XML pseudo-SQL, care este apoi analizat printr-o foaie de stiluri XML pentru a genera instrucțiunea SQL finală care este trimisă la sursa relațională. Atunci când generați documentul XML intern inițial sau condițiile pentru o coloană sunt generate ca elemente XML imbricate ca în exemplul următor:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Proprietatea MaxElementDepth implicită pentru un obiect Dom MSXML utilizat de Analysis Services pentru a construi documentul xml este 256 în MSXML 6.0. prin urmare, atunci când este mărită configurația MAXROLAPORCONDITIONS , documentul XML generat poate depăși această adâncime maximă.
Rezolvare
Această problemă este remediată în următoarea actualizare cumulativă pentru SQL Server:
Actualizarea cumulativă 5 pentru SQL Server 2016 RTM
Actualizarea cumulativă 2 pentru SQL Server 2016 SP1
Actualizarea cumulativă 4 pentru SQL Server 2014 SP2
Actualizare cumulativă 10 pentru SQL Server 2014 SP1
Despre actualizările cumulative pentru SQL Server
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Cea mai recentă actualizare cumulativă pentru SQL Server 2016
Cea mai recentă actualizare cumulativă pentru SQL Server 2014
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Mai multe informații
Această remediere modifică modul în care este generat documentul XML intermediar, astfel încât fiecare suplimentare sau condiții să nu fie imbricate în elementul anterior sau XML. Prin urmare, ați putea mări MaxROLAPOrConditions după 256. Cu toate acestea, există încă limite practice pentru numărul de condiții care pot fi utilizate. Pe măsură ce numărul sau condițiile cresc, complexitatea instrucțiunii SQL generate poate depăși capacitatea serverului de baze de date relationale, cauzând noi condiții de eroare. Iată câteva exemple de condiții care pot provoca erori noi:
-
Depășirea numărului maxim de parametri dintr-o instrucțiune
-
Depășirea numărului maxim de condiții dintr-o clauză Where
-
Erori în analizarea șirului interogării SQL
-
Depășirea dimensiunii maxime a unui șir de interogare SQL
Prin urmare, vă recomandăm să efectuați ajustări la valoarea de configurare MaxROLAPOrConditions cu precauție.
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.