Oprava: Multidimensional Expressions dotaz, který obsahuje funkci Filtr vrátí nesprávný výsledek v SQL Server 2005 Analysis Services

Překlady článku Překlady článku
ID článku: 942654 - Produkty, které se vztahují k tomuto článku.
Chyba: # 50001670 (SQL Hotfix)
Společnost Microsoft distribuuje opravy Microsoft SQL Server 2005 jako jeden soubor ke stažení. Protože jsou kumulativní opravy, každé nové vydání obsahuje všechny opravy hotfix a opravte všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2005 vydání.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při spuštění dotazu Multidimensional Expressions (MDX) v Microsoft SQL Server 2005 Analysis Services vrátí nesprávný výsledek dotazu MDX. Tento problém nastane v případě splnění následujících podmínek:
  • Dotaz MDX obsahuje funkce FILTER.
  • Funkce FILTER vnořené ve funkci CROSSJOIN.

Řešení

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 4. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2005 Service Pack 2 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
941450Balíček kumulativní aktualizace 4 pro SQL Server 2005 Service Pack 2
Poznámka: Protože jsou kumulativní sestavení, každé nové verzi oprava obsahuje všechny opravy hotfix a opravte všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2005 vydání. Společnost Microsoft doporučuje zvážit instalaci nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
937137SQL Server 2005 vytvoří, které byly vydány po vydání SQL Server 2005 Service Pack 2
Opravy hotfix Microsoft SQL Server 2005 jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. SQL Server 2005 Service Pack 2 hotfix je třeba použít k instalaci aplikace SQL Server 2005 Service Pack 2. Ve výchozím opravy hotfix, která je poskytována v aktualizace service pack pro SQL Server součástí příští aktualizace service pack pro SQL Server.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Další informace

Příklad

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
Nesprávný výsledek je následující:
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
V tomto dotazu MDX druhý parametr HEAD funkci, která má hodnotu 1, je nahrazen funkce IIF. Funkce IIF vrátí stejnou hodnotu 1. Výsledkem tohoto dotazu MDX se však liší od dotazu MDX je zmíněných.

Další informace o změně jaké soubory a informace o všech předpokladech použít balíček kumulativní aktualizaci obsahující opravu hotfix popsanou v tomto článku znalostní báze Knowledge Base klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
941450Balíček kumulativní aktualizace 4 pro SQL Server 2005 Service Pack 2

Odkazy

Další informace o seznamu sestavení, které jsou k dispozici po SQL Server Service Pack 2 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
937137SQL Server 2005 vytvoří, které byly vydány po vydání SQL Server 2005 Service Pack 2
Další informace o modelu přírůstkové Servicing pro SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
935897Přírůstkové Model Servicing je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potíže
Další informace o získání SQL Server 2005 Service Pack 2 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
913089Jak získat nejnovější aktualizaci service pack pro SQL Server 2005
Další informace o nových funkcí a vylepšení v SQL Server 2005 Service Pack 2 naleznete na následujícím webu:
http://go.microsoft.com/fwlink/?LinkId=71711
Další informace o pojmenování schématu aktualizace SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů pro balíčky aktualizací softwaru Microsoft SQL Server
Další informace o terminologii používané v aktualizacích softwaru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 942654 - Poslední aktualizace: 9. října 2007 - Revize: 1.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2005 Analysis Services
Klíčová slova: 
kbmt kbsql2005as kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced KB942654 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:942654

Dejte nám zpětnou vazbu

 

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