Sümptomid
Oletagem, et kasutate SQL Server 2014 või 2016 analüüsiteenuste eksemplaris Exchange ' i (ROLAP) režiimi mõõtühikut. Kui olete atribuudi MaxRolapOrConditions väärtuseks määranud rohkem kui 256, saate MDX-päringud selle mõõtude rühmas käivitada. Sellisel juhul kuvatakse tõrketeated, mis näeb välja järgmine:
#Error DOM parser ei saanud voogu laadida ja sõeluda. URL: "Põhjus:" toiming katkestati: Max-element-sügavuse piirang on rikutud. " Allikas: ' '. Pilt asukoht: 0. Rida: 6.
Põhjus
Analüüsiteenuste genereerib pseudo-SQL-i XML-dokumendi, mis seejärel sõelutakse läbi XML-laadilehe, et luua viimase SQL-lause, mis saadetakse suhtelise allika juurde. Algse sisemise XML-dokumendi loomisel või veeru tingimused luuakse pesastatud XML-elementidena nagu järgmises näites:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
MaxElementDepth , mida analüüsiteenuste kasutab XML-dokumendi koostamiseks, on 256 MSXML 6.0. Seega, kui MaxROLAPOrConditions konfigureerimine on suurenenud, võib loodud XML-dokument ületada selle maksimaalse sügavuse.
Lahendus
See probleem on lahendatud järgmises SQL serveri koondvärskenduses:
Kumulatiivne Update 5 SQL Server 2016 RTM
Kumulatiivne Update 2 SQL Server 2016 SP1 jaoks
Kumulatiivne värskendus 4 SQL Server 2014 SP2 jaoks
Kumulatiivne Update 10 SQL Server 2014 SP1 jaoks
SQL serveri kumulatiivsed värskendused
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Lisateave
See parandus muudab vahepealse XML-dokumendi loomise viisi, nii et iga täiendav või tingimus poleks varem või XML-elemendis pesastatud. Seetõttu võite suurendada MaxROLAPOrConditions üle 256. Siiski on siiski praktilised piirangud, mida saab kasutada. Kui arv või tingimused on tõusnud, võib genereeritud SQL-lause keerukus olla suurem kui seostatud andmebaasiserveri maht, mis põhjustab uusi tõrke tingimusi. Järgnevalt on toodud näited tingimustest, mis võivad põhjustada uusi tõrkeid.
-
Maksimaalse arvu parameetrite ületamine lauses
-
WHERE -klausli tingimuste maksimaalse arvu ületamine
-
Tõrked SQL-päringu stringi sõelumisel
-
SQL-päringu stringi maksimaalse mahu ületamine
Seetõttu soovitame MaxROLAPOrConditions kohandusi muuta ettevaatlikult.
Viited
Siit saate teada, Kuidas Microsoft kasutab tarkvaravärskenduste kirjeldamiseks.