Symptomy
Załóżmy, że korzystasz z trybu magazynowania relacyjnego OLAP (ROLAP) dla grupy miar w wystąpieniu usług SQL Server 2014 lub 2016 Analysis Services. Po ustawieniu wartości właściwości zaawansowane MaxRolapOrConditions na więcej niż 256 kwerendy MDX są wykonywane w tej grupie miar. W tym przypadku są wyświetlane błędy podobne do następujących:
#Error analizatora DOM nie udało się załadować i zanalizować strumienia. Adres URL: "Przyczyna: przerwano działanie: naruszono ograniczenia typu Max-element-głębokość." Źródło: ' '. Pozycja pliku: 0. Wiersz: 6.
Przyczyna
Usługi Analysis Services generują dokument XML pseudo-SQL, który następnie jest analizowany za pośrednictwem arkusza stylów XML w celu wygenerowania końcowej instrukcji SQL wysyłanej do źródła relacyjnego. Podczas generowania początkowego wewnętrznego dokumentu XML lub warunków dla kolumny są generowane jako zagnieżdżone elementy XML, jak w poniższym przykładzie:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Domyślna Właściwość MaxElementDepth obiektu modelu dom programu MSXML używana przez usługi Analysis Services do konstruowania dokumentu XML to 256 w programie MSXML 6.0. Dlatego po zwiększeniu konfiguracji MAXROLAPORCONDITIONS wygenerowany dokument XML może przekroczyć tę maksymalną głębokość.
Rozwiązanie
Ten problem został rozwiązany w następującej zbiorczej aktualizacji dla programu SQL Server:
Zbiorcza aktualizacja 5 dla programu SQL Server 2016 RTM
Zbiorcza aktualizacja 2 dla programu SQL Server 2016 z dodatkiem SP1
Zbiorcza aktualizacja 4 dla programu SQL Server 2014 z dodatkiem SP2
Zbiorcza aktualizacja 10 dla programu SQL Server 2014 z dodatkiem SP1
Informacje dotyczące aktualizacji zbiorczych programu SQL Server
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2016
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2014
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Więcej informacji
Ta poprawka zmienia sposób generowania pośredniego dokumentu XML, więc każdy dodatkowy lub dowolny warunek nie jest zagnieżdżony w elemencie poprzedzającym lub XML. Można więc zwiększyć MaxROLAPOrConditions ponad 256. Jednak nadal istnieją praktyczne ograniczenia dotyczące liczby lub warunków, które mogą być używane. Po powiększeniu liczby lub warunków złożoność wygenerowanej instrukcji SQL może przekroczyć pojemność serwera relacyjnej bazy danych, co powoduje powstanie nowych warunków błędów. Poniżej przedstawiono przykłady warunków, które mogą powodować nowe błędy:
-
Przekroczenie maksymalnej liczby parametrów w instrukcji
-
Przekroczenie maksymalnej liczby warunków w klauzuli WHERE
-
Błędy podczas analizowania ciągu zapytania SQL
-
Przekraczanie maksymalnego rozmiaru ciągu kwerendy SQL
Dlatego zalecamy, aby zmiany w wartości konfiguracji MaxROLAPOrConditions były wykonywane z zachowaniem ostrożności.
Informacje
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.