Síntomas
Suponga que usa el modo de almacenamiento OLAP relacional (ROLAP) para un grupo de medida en una instancia de SQL Server 2014 o 2016 Analysis Services. Después de establecer el valor de la propiedad avanzada MaxRolapOrConditions en más de 256, se ejecutan consultas MDX en ese grupo de medida. En este caso, recibirá errores similares a los siguientes:
#Error el analizador DOM no pudo cargar ni analizar la secuencia. URL: ' ' motivo: ' operación anulada: se ha infringido la restricción Max-Element-depth '. Fuente: ' '. Posición del archivo: 0. Línea: 6.
Causa
Analysis Services genera un documento XML de pseudo-SQL, que se analiza a través de una hoja de estilos XML para generar la instrucción SQL final que se envía al origen relacional. Al generar el documento XML interno inicial, o las condiciones para una columna se generan como elementos XML anidados, como en el ejemplo siguiente:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
La propiedad predeterminada MaxElementDepth de un objeto MSXML Dom utilizado por Analysis Services para generar el documento xml es 256 en MSXML 6.0. por lo tanto, cuando se aumenta la configuración de MaxROLAPOrConditions , el documento XML generado puede exceder esta profundidad máxima.
Resolución
Este problema se ha corregido en la siguiente actualización acumulativa de SQL Server:
Actualización acumulativa 5 para SQL Server 2016 RTM
Actualización acumulativa 2 para SQL Server 2016 SP1
Actualización acumulativa 4 para SQL Server 2014 SP2
Actualización acumulativa 10 para SQL Server 2014 SP1
Acerca de las actualizaciones acumulativas de SQL Server
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
Esta corrección cambia el modo en que se genera el documento XML intermedio, de modo que cada condición o adicional no se anide en el elemento anterior o XML. Por lo tanto, puede aumentar el MaxROLAPOrConditions más allá del 256. Sin embargo, todavía existen limitaciones prácticas en el número de condiciones o que se pueden usar. A medida que el número de condiciones o aumenta, la complejidad de la instrucción SQL generada puede superar la capacidad del servidor de bases de datos relacionales, lo que causará nuevas condiciones de error. A continuación se muestran algunos ejemplos de condiciones que pueden provocar errores nuevos:
-
Superar el número máximo de parámetros en una instrucción
-
Exceder el número máximo de condiciones en una cláusula Where
-
Errores al analizar la cadena de consulta SQL
-
Exceder el tamaño máximo de una cadena de consulta SQL
Por lo tanto, recomendamos que los ajustes en el valor de configuración MaxROLAPOrConditions se realicen con precaución.
Referencias
Obtenga más información sobre la terminología que Microsoft usa para describir las actualizaciones de software.