CORRECTIF : Requête MDX renvoie des erreurs si la valeur de MaxRolapOrConditions est supérieure à 256 dans SQL Server Analysis Services

S’applique à : SQL Server 2014 DeveloperSQL Server 2014 DeveloperSQL Server 2014 Enterprise Plus

Symptômes


Supposons que vous utilisez le mode de stockage relationnel OLAP (ROLAP) pour un groupe de mesures dans une instance de SQL Server 2014 ou 2016 Analysis Services. Après avoir défini la valeur de la MaxRolapOrConditions propriété avancée à plus de 256, vous exécutez des requêtes MDX sur ce groupe de mesures. Dans ce cas, vous recevez des erreurs semblables aux suivantes :

Analyseur de #Error le DOM a échoué charger et analyser le flux de données. URL :'' raison : « opération abandonnée : contrainte d’élément-max-depth non respectée. » Source :''. Position de fichier : 0. ligne : 6.

Cause


Analysis Services génère un document XML pseudo-SQL, qui est ensuite analysé dans une feuille de Style XML pour générer l’instruction SQL finale qui est envoyée à la source relationnelle. Lors de la génération du document XML interne initial, les conditions ou d’une colonne sont générées comme des éléments XML imbriqués comme dans l’exemple suivant :

<OR>
<Condition>column1 = value1</Condition>
<OR>
<Condition>column1 = value2</Condition>
<OR>
<Condition>column1 = value3</Condition>
</OR>
</OR>
</OR>

La valeur par défaut MaxElementDepth propriété d’un objet MSXML DOM qui est utilisé par Analysis Services pour générer le document XML est de 256 dans MSXML 6.0.

Par conséquent, lors de la configuration de MaxROLAPOrConditions est augmentée, le document XML généré peut dépasser cette profondeur maximale.

Résolution


Ce problème est résolu dans la mise à jour cumulative suivante pour SQL Server :

Mise à jour cumulative 5 RTM 2016 de SQL Server

Mise à jour cumulative 2 SP1 2016 de SQL Server

 
À propos des mises à jour cumulatives pour SQL Server

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations


Ce correctif modifie la génération du document XML intermédiaire, afin que chaque condition OR supplémentaire n’est pas imbriquée dans l’élément XML ou antérieure. Par conséquent, vous pourriez augmenter la MaxROLAPOrConditions au-delà de 256. Toutefois, il existe des limites pratiques toujours le nombre de conditions ou qui peut être utilisé.

À mesure que le nombre de conditions OR augmente, la complexité de l’instruction SQL qui est générée peut dépasser la capacité du serveur de base de données relationnelle, à l’origine de nouvelles conditions d’erreur.

Voici des exemples de conditions qui peuvent provoquer des erreurs de nouveau :
  • Dépassement du nombre maximal de paramètres dans une instruction
  • Dépassement du nombre maximal de conditions dans une clause where
  • Erreurs dans l’analyse de la chaîne de requête SQL
  • Supérieure à la taille maximale d’une chaîne de requête SQL

Par conséquent, nous recommandons que tous les ajustements à la valeur de configuration MaxROLAPOrConditions être effectuées avec précaution.

Références


Découvrez la terminologie que Microsoft utilise pour décrire les mises à jour logicielles.