KB2430162 – КОРЕКЦИЯ: "Изразът съдържа функция, която не може да работи на множество с повече от 4 294 967 296 кортежа", се появява съобщение за грешка, когато опитате да изпълните MDX заявка в SSAS 2008 или SSAS 2008 R2

Microsoft разпространява корекциите за Microsoft SQL Server 2008 Service Pack 1(SP1) или SQL Server 2008 R2 като един файл за изтегляне. Тъй като корекциите са кумулативни, всяко ново издание съдържа всички актуални поправки и корекции на защитата, които са били включени в предишното издание на корекция на SQL Server 2008 Service Pack 1(SP1) или SQL Server 2008 R2.

Симптоми

Имайте предвид сценария, описан по-долу:

  • Имате заявка за многомерни изрази (MDX), която отговаря на следните условия в Microsoft SQL Server 2008 Analysis Services (SSAS) 2008 или в Microsoft SQL Server 2008 R2 Analysis Services (SSAS) 2008 R2:

    • Заявката използва функцията CROSSJOIN.

    • Изразът на заявката има повече от два набора от аргументи, които са съставени от кортежи от различни йерархии на атрибути в едно и също измерение.

    • Тези множества са разделени с друго множество, което е съставено от кортежи от друго измерение.

    • Теоретичният набор от резултати за функцията CROSSJOIN обикновено е повече от 4 294 967 296 кортежа.
      Ако например имате MDX заявка, която съдържа следното:

      WITH SET S AS CROSSJOIN([Product].[Large Photo].[Large Photo], [Customer].[Customer].[Customer], [Product].[Product].[Product])
      SELECT {} ON 0,
      S.ITEM(1) ON 1
      FROM [Adventureworks]
      
  • Опитайте се да изпълните заявката.

В този случай заявката не се изпълнява. Освен това се извежда следното съобщение за грешка:

Забележка

Изразът съдържа функция, която не може да работи с множество с повече от 4 294 967 296 кортежа.

Забележка: Този тип MDX заявка може да се генерира автоматично от обобщена таблица на Excel.

Решение

Кумулативна информация за актуализацията

SQL Server 2008 SP1

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 11. За повече информация как да получите този сборен пакет за актуализация за SQL Server 2008 Service Pack 1 (SP1), щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2413738 Сборен пакет 11 за SQL Server 2008 Service Pack 1 Забележка Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са включени в предишното издание на корекция за SQL Server 2008 Service Pack 1 (SP1). Препоръчваме ви да помислите за прилагане на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

970365 Компилациите на SQL Server 2008, които са издадени след издаването на SQL Server 2008 Service Pack 1

SQL Server 2008 R2

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 5. За допълнителна информация как да получите този сборен пакет за актуализация за SQL Server 2008 R2, щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2438347 Сборен пакет 5 за SQL Server 2008 R2 Забележка: Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са включени в предишното издание на корекция за SQL Server 2008 R2. Препоръчваме ви да помислите за прилагане на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

981356 Компилациите на SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2

SQL Server 2008 Service Pack 2

Корекцията за този проблем е издадена за първи път в сборна актуализация 2 за SQL Server 2008 Service Pack 2. За допълнителна информация относно този пакет за кумулативна актуализация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2467239 Сборен пакет за актуализация 2 за SQL Server 2008 Service Pack 2Note Тъй като компилациите са кумулативни, всяко ново издание на корекции съдържа всички актуални поправки и корекции на защитата, които са включени в предишното издание на корекция SQL Server 2008. Microsoft препоръчва да обмислите прилагането на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2402659 Компилациите на SQL Server 2008, които са издадени след издаването на SQL Server 2008 Service Pack 2 Горещи корекции на Microsoft SQL Server 2008 се създават за определени сервизни пакети за SQL Server. Трябва да приложите актуална корекция за SQL Server 2008 Service Pack 2 към инсталация на SQL Server 2008 Service Pack 2. По подразбиране всяка актуална корекция, предоставена в сервизен пакет на SQL Server, се включва в следващия сервизен пакет на SQL Server.

Заобиколно решение

За да заобиколите този проблем, използвайте израз, който има два съседни атрибута от едно и също измерение в заявката. Например MDX заявката съдържа следното:

WITH SET S AS CROSSJOIN([Product].[Large Photo].[Large Photo], [Product].[Product].[Product], [Customer].[Customer].[Customer])
SELECT {} ON 0,
S.ITEM(1) ON 1
FROM [Adventureworks]

      

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.