REVISIÓN: Una consulta de expresiones multidimensionales que contiene una función de filtro devuelve un resultado incorrecto en SQL Server 2005 Analysis Services

Seleccione idioma Seleccione idioma
Id. de artículo: 942654 - Ver los productos a los que se aplica este artículo
Error: # 50001670 (revisión SQL)
Microsoft distribuye correcciones de Microsoft SQL Server 2005 como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en el anterior de SQL Server 2005.
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando ejecuta una consulta de expresiones multidimensionales (MDX) en Microsoft SQL Server 2005 Analysis Services, la consulta MDX devuelve un resultado incorrecto. Este problema ocurre cuando se cumplen las condiciones siguientes:
  • La consulta MDX contiene una función de filtro.
  • La función FILTER está anidada en una función CROSSJOIN.

Solución

La corrección para este problema se publicó por primera vez en actualización acumulativa 4. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
941450Paquete de actualización acumulativa 4 para SQL Server 2005 Service Pack 2
Nota Como las compilaciones son acumulativas, cada versión de revisión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en el anterior de SQL Server 2005. Microsoft recomienda que considere aplicar la versión de revisión más reciente que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Las revisiones de Microsoft SQL Server 2005 se crean para los service Pack específicos de SQL Server. Debe aplicar una revisión de SQL Server 2005 Service Pack 2 a una instalación de SQL Server 2005 Service Pack 2. De forma predeterminada, cualquier revisión suministrada en un service pack se incluye en el siguiente service pack.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Ejemplo

If you run the following MDX query against the AdventureWorks sample database in SQL Server 2005 Analysis Services, the query returns the correct result:
WITH MEMBER [Reseller].[Product Line].[COG_OQP_INT_sm2] AS 'SUM(   {[Reseller].[Product Line].[Product Line].MEMBERS},
    ([Reseller].[Last Order Year].[COG_OQP_INT_m5]))', SOLVE_ORDER = 6
MEMBER [Reseller].[Last Order Year].[COG_OQP_INT_sm3] AS 'SUM(    {[Reseller].[Last Order Year].[Last Order Year].MEMBERS},
    IIF(        ISEMPTY(  ([Measures].[Growth in Customer Base])),0,  1))', SOLVE_ORDER = 5
MEMBER [Reseller].[Last Order Year].[COG_OQP_INT_m5] AS 'SUM(    {[Reseller].[Last Order Year].[Last Order Year].MEMBERS},
    IIF(        ISEMPTY(  ([Measures].[Growth in Customer Base])),0, 1))', SOLVE_ORDER = 65534
MEMBER [Reseller].[Bank Name].[COG_OQP_INT_sm1] AS '1', SOLVE_ORDER = 7
SELECT
CROSSJOIN(
        UNION(
            CROSSJOIN(
                CROSSJOIN(
                    HEAD(
                        {[Reseller].[Bank Name].[COG_OQP_INT_sm1]}, 1
                     ),
                    {[Reseller].[Product Line].[COG_OQP_INT_sm2]}),
                    {[Reseller].[Last Order Year].[COG_OQP_INT_sm3]}),
            CROSSJOIN(
                {[Reseller].[Bank Name].&[International Bank]},
                CROSSJOIN(
                    {[Reseller].[Product Line].[COG_OQP_INT_sm2]},
                    {[Reseller].[Last Order Year].[COG_OQP_INT_sm3]}))),
            {[Measures].[Growth in Customer Base]})
ON AXIS(0) 
FROM [Adventure Works]
CELL PROPERTIES VALUE
The following is the correct result:
COG_OQP_INT_sm1                 International Bank
COG_OQP_INT_sm2                 COG_OQP_INT_sm2
COG_OQP_INT_sm3                 COG_OQP_INT_sm3
Growth in Customer Base         Growth in Customer Base
1                               11
However, when you run the following MDX query, the query returns an incorrect result:
WITH MEMBER [Reseller].[Product Line].[COG_OQP_INT_sm2] AS 'SUM(   {[Reseller].[Product Line].[Product Line].MEMBERS},
    ([Reseller].[Last Order Year].[COG_OQP_INT_m5]))', SOLVE_ORDER = 6
MEMBER [Reseller].[Last Order Year].[COG_OQP_INT_sm3] AS 'SUM(    {[Reseller].[Last Order Year].[Last Order Year].MEMBERS},
    IIF(        ISEMPTY(  ([Measures].[Growth in Customer Base])),0,  1))', SOLVE_ORDER = 5
MEMBER [Reseller].[Last Order Year].[COG_OQP_INT_m5] AS 'SUM(    {[Reseller].[Last Order Year].[Last Order Year].MEMBERS},
    IIF(        ISEMPTY(  ([Measures].[Growth in Customer Base])),0, 1))', SOLVE_ORDER = 65534
MEMBER [Reseller].[Bank Name].[COG_OQP_INT_sm1] AS '1', SOLVE_ORDER = 7
SELECT
CROSSJOIN(
        UNION(
            CROSSJOIN(
                CROSSJOIN(
                    HEAD(
                        {[Reseller].[Bank Name].[COG_OQP_INT_sm1]},
                        -- If you replace the following parameter with a value of 1, the query returns the correct result.
                         IIF(
                             COUNT(
                                 CROSSJOIN(
                                     FILTER(
                                         {[Reseller].[Bank Name].[Bank Name].MEMBERS},
                                         ([Measures].[Growth in Customer Base],
                                          [Reseller].[Product Line].[COG_OQP_INT_sm2],
                                          [Reseller].[Last Order Year].[COG_OQP_INT_sm3])>= 11),
                                     {[Reseller].[Product Line].[Product Line].MEMBERS}
                                 ),
                                 INCLUDEEMPTY
                             ) > 0, 1, 0
                         )
                        ----------
                     ),
                    {[Reseller].[Product Line].[COG_OQP_INT_sm2]}),
                    {[Reseller].[Last Order Year].[COG_OQP_INT_sm3]}),
            CROSSJOIN(
                {[Reseller].[Bank Name].&[International Bank]},
                CROSSJOIN(
                    {[Reseller].[Product Line].[COG_OQP_INT_sm2]},
                    {[Reseller].[Last Order Year].[COG_OQP_INT_sm3]}))),
            {[Measures].[Growth in Customer Base]})
ON AXIS(0) 
FROM [Adventure Works]
 CELL PROPERTIES VALUE
lo siguiente es el resultado incorrecto:
COG_OQP_INT_sm1                 International Bank
COG_OQP_INT_sm2                 COG_OQP_INT_sm2
COG_OQP_INT_sm3                 COG_OQP_INT_sm3
Growth in Customer Base         Growth in Customer Base
1                               15
en esta consulta MDX, el segundo parámetro de la función de encabezado, que tiene un valor de 1, se reemplaza con una función IIF. La función IIF devuelve el mismo valor, 1. Sin embargo, el resultado de esta consulta MDX difiere de la consulta MDX que se menciona anteriormente.

Para obtener más información acerca de qué archivos se ha cambiado y para información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa que contiene la revisión que se describe en este artículo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
941450Paquete de actualización acumulativa 4 para SQL Server 2005 Service Pack 2

Referencias

Para obtener más información acerca de la lista de generaciones que están disponibles después de SQL Server Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Para obtener más información acerca del modelo incremental de servicio para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897Un modelo incremental de servicio está disponible desde el equipo de SQL Server para entregar revisiones para problemas detectados
Para obtener más información acerca de cómo obtener SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089Cómo obtener el service pack más reciente para SQL Server 2005
Para obtener más información acerca de las nuevas características y las mejoras de SQL Server 2005 Service Pack 2, visite el siguiente sitio Web:
http://go.microsoft.com/fwlink/?LinkId=71711
Para obtener más información sobre el esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Nuevo esquema de nomenclatura para los paquetes de actualización del software de Microsoft SQL Server
Para obtener más información acerca de la terminología relativa de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 942654 - Última revisión: martes, 09 de octubre de 2007 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Analysis Services
Palabras clave: 
kbmt kbsql2005as kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced KB942654 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 942654

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com