Příznaky
Předpokládejme, že používáte režim úložiště relační OLAP (ROLAP) pro skupinu měr v instanci systému SQL Server 2014 nebo 2016 Analysis Services. Po nastavení hodnoty vlastnosti MaxRolapOrConditions na hodnotu větší než 256 spustíte dotazy MDX v dané skupině měr. V tomto případě se zobrazí chyby podobné následujícím:
#Error analyzátoru DOM se nepodařilo načíst a analyzovat datový proud. URL: ' ' důvod: ' byla přerušena operace: bylo porušeno omezení Max-elementu-Depth. Zdroj: ' '. Pozice v souboru: 0. Čára: 6.
Příčina
Služba Analysis Services vygeneruje dokument XML typu pseudo-SQL, který se pak analyzuje prostřednictvím šablony stylů XML a vygeneruje konečný příkaz SQL odeslaný do relačního zdroje. Když generujete počáteční vnitřní dokument XML nebo jsou podmínky pro sloupec vygenerované jako vnořené prvky XML, jako v následujícím příkladu:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Výchozí vlastnost MaxElementDepth pro objekt analyzátoru MSXML, který se používá v rámci služby Analysis Services k sestavení XML dokumentu, je 256 ve službě MSXML 6.0. v důsledku toho, když se konfigurace MaxROLAPOrConditions zvýší, může generovaný dokument XML překročit tuto maximální hloubku.
Řešení
Tento problém je opravený v následující kumulativní aktualizaci SQL serveru:
Kumulativní aktualizace 5 pro SQL Server 2016 RTM
Kumulativní aktualizace 2 pro SQL Server 2016 SP1
Kumulativní aktualizace 4 pro SQL Server 2014 SP2
Kumulativní aktualizace 10 pro SQL Server 2014 SP1
O kumulativních aktualizacích pro SQL Server
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace
Tento opravný nástroj změní způsob generování zprostředkujícího dokumentu XML, takže v předchozím prvku nebo elementu XML nejsou vnořené žádné další podmínky nebo. Mohli byste proto zvýšit MaxROLAPOrConditions než 256. Existují však i praktická omezení počtu nebo podmínek, které lze použít. Po zvýšení počtu nebo podmínek se složitá složitost generovaného příkazu SQL překročí kapacitu serveru relační databáze, což způsobuje nové chybové stavy. Následují příklady podmínek, které mohou způsobit nové chyby:
-
Překročení maximálního počtu parametrů v příkazu
-
Překročení maximálního počtu podmínek v klauzuli WHERE
-
Chyby při analýze řetězce dotazu SQL
-
Překročení maximální velikosti řetězce dotazu SQL
Proto doporučujeme, aby se změny konfigurace MaxROLAPOrConditions projevily opatrně.
Odkazy
Informace o terminologii , kterou Microsoft používá k popisu aktualizací softwaru.