Simptomi
Pretpostavimo da koristite relacioni OLAP (ROLAP) režim skladištenja za grupu mera u instanci sql Server 2014 ili 2016 Analysis Services. Nakon što postavite vrednost naprednog svojstva MaxRolapOrConditions na više od 256, izvršavate MDX upite u toj grupi mera. U ovom slučaju dobijate greške koje liče na sledeće:
#Error THE DOM raščlanjavaju nisu uspeli da učitaju i raščlane potok. URL:'' Razlog: 'Operacija prekinuta: narušena ograničenja maksimalne dubine elementa.' Izvor:''. Pozicija datoteke: 0. Linija: 6.
Uzrok
Analysis Services generiše pseudo-SQL XML dokument koji se zatim raščlanjava preko LISTA SA XML stilom da bi se generisala konačna SQL naredba koja se šalje relacionom izvoru. Prilikom generisanja početnog internog XML dokumenta, USLOVI ZA KOLONU se generišu kao ugnežđeni XML elementi kao u sledećem primeru:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Podrazumevano svojstvo MaxElementDepth za MSXML DOM objekat koji usluge analize koriste za izradu XML dokumenta je 256 u MSXML 6.0.Stoga, kada se poveća konfiguracija MaxROLAPOrConditions, generisani XML dokument može da premaši ovu maksimalnu dubinu.
Rešenje
Ovaj problem je rešen u sledećoj kumulativnoj ispravci za SQL Server:
Kumulativna ispravka 5 za SQL Server 2016 RTM
Kumulativna ispravka 2 za SQL Server 2016 SP1
Kumulativna ispravka 4 za SQL Server 2014 SP2
Kumulativna ispravka 10 za SQL Server 2014 SP1
Kumulativne ispravke za SQL Server
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Više informacija
Ova ispravka menja način generisanja posredničkog XML dokumenta, tako da svaki dodatni uslov OR ne bude ugnežđen u prethodni ILI XML element. Zbog toga biste mogli da povećate MaxROLAPOrConditions preko 256. Međutim, još uvek postoje praktična ograničenja broja uslova OR koji mogu da se koriste. Kako se broj uslova OR povećava, složenost SQL naredbe koja se generiše može premašiti kapacitet servera relacione baze podataka, što dovodi do novih uslova greške. Slede primeri uslova koji mogu izazvati nove greške:
-
Prekoračenje maksimalnog broja parametara u izvodu
-
Prekoračenje maksimalnog broja uslova u odredbi
-
Greške u raščlanivanju niske SQL upita
-
Prekoračenje maksimalne veličine niske SQL upita
Stoga preporučujemo da sva podešavanja vrednosti konfiguracije MaxROLAPOrConditions budu izvršena sa oprezom.
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.