Симптоми
Да предположим, че използвате релационния режим на OLAP (ROLAP) за група мерки в екземпляр на SQL Server 2014 или услуги за анализ на 2016. След като зададете стойността на свойството MaxRolapOrConditions Advanced за повече от 256, можете да изпълните MDX заявки на тази група мерки. В този случай получавате грешки, които приличат на следните:
#Error анализаторът на DOM не успя да зареди и анализира потока. URL адрес: "причина:" операцията е прекратена: нарушена е ограничението за максимален брой елементи Източник: ' '. Позиция на файла: 0. Line: 6.
Причина
Услуги за анализ генерира псевдо-SQL XML документ, който след това се анализира чрез XML лист със стилове, за да генерира Последната SQL команда, която се изпраща към релационния източник. При генериране на първоначалния вътрешен XML документ или условията за колона се генерират като вложени XML елементи, както е в следния пример:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Свойството MaxElementDepth по подразбиране за обект MSXML DOM, което се използва от Analysis Services, за да се създаде XML документът, е 256 в MSXML 6.0. Следователно при увеличаване на конфигурацията на MaxROLAPOrConditions , генерираният XML документ може да надвиши тази максимална дълбочина.
Решение
Този проблем е коригиран в следната сборна актуализация за SQL Server:
Кумулативна актуализация 5 за SQL Server 2016 RTM
Кумулативна актуализация 2 за SQL Server 2016 SP1
Кумулативна актуализация 4 за SQL Server 2014 SP2
Кумулативна актуализация 10 за SQL Server 2014 SP1
За сборните актуализации за SQL Server
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".
Повече информация
Тази корекция променя начина, по който се генерира междинният XML документ, така че всяко допълнително или условие да не е вложено в предварителния или XML елемент. Следователно бихте могли да увеличите MaxROLAPOrConditions над 256. Все още обаче има практически ограничения за броя или условията, които могат да бъдат използвани. Тъй като броят или условията се увеличават, сложността на SQL командата, която се генерира, може да надвиши капацитета на сървъра на релационната база данни, което води до нови условия за грешка. По-долу са дадени примери на условия, които може да доведат до нови грешки:
-
Превишаване на максималния брой параметри в отчет
-
Превишаване на максималния брой условия в клауза Where
-
Грешки при анализиране на низа на SQL заявката
-
Превишаване на максималния размер на низ на SQL заявка
Ето защо препоръчваме всички промени в конфигурацията на MaxROLAPOrConditions да бъдат направени с повишено внимание.
Препратки
Научете повече за терминологията , която Microsoft използва, за да опише софтуерни актуализации.