KB2430162-FIX: "выражение включает функцию, которая не может работать с набором с более чем 4 294 967 296 кортежами", если при попытке выполнить запрос многомерных выражений в службах SSAS 2008 или SSAS 2008 R2 появляется сообщение об ошибке.


Microsoft SQL Server 2008 с пакетом обновления 1 (SP1) или SQL Server 2008 R2 догружают исправления в один файл для загрузки. Поскольку исправления являются кумулятивными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в пакет исправлений для Microsoft SQL Server 2008 (SP1) или SQL Server 2008 R2 Fix Release.

Проблемы


Рассмотрим следующий сценарий.
  • У вас есть запрос МНОГОМЕРных выражений, отвечающий указанным ниже условиям в Microsoft SQL Server 2008 Analysis Services (SSAS) 2008 или Microsoft SQL Server 2008 R2 Analysis Services (SSAS) 2008 R2:
    • Запрос использует функцию перекрестного соединения.
    • Выражение запроса содержит более двух наборов аргументов, состоящих из кортежей из разных иерархий атрибутов в одном измерении.
    • Эти наборы разделены другим набором, состоящим из кортежей из другого измерения.
    • Теоретический набор результатов для функции перекрестного соединения обычно имеет более 4 294 967 296 кортежей. Например, у вас есть запрос многомерных выражений, который содержит следующее:
      WITH SET S AS CROSSJOIN([Product].[Large Photo].[Large Photo], [Customer].[Customer].[Customer], [Product].[Product].[Product])SELECT {} ON 0,S.ITEM(1) ON 1FROM [Adventureworks]
  • Вы пытаетесь выполнить запрос.
В этом случае запрос не выполняется. Кроме того, появляется приведенное ниже сообщение об ошибке:
Выражение имеет функцию, которая не может работать с набором, содержащим более 4 294 967 296 кортежей.
Примечание. Этот тип запроса многомерных выражений может автоматически создаваться в сводной таблице Excel.

Решение


Сведения о накопительном пакете обновления

SQL Server 2008 SP1

Исправление для этой проблемы впервые выпущено в накопительном обновлении 11. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 с пакетом обновления 1 (SP1), щелкните следующий номер статьи базы знаний Майкрософт:
2413738 Накопительный пакет обновления 11 для SQL Server 2008 с пакетом обновления 1 (SP1)
Примечание. Поскольку сборки являются кумулятивными, каждый новый набор исправлений содержит все исправления и все исправления для системы безопасности, которые были выпущены в предыдущем исправлении для SQL Server 2008 с пакетом обновления 1 (SP1). Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
970365 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 1 (SP1) для SQL Server 2008

SQL Server 2008 R2

Исправление для этой проблемы впервые выпущено в накопительном обновлении 5. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:
2438347 Накопительный пакет обновления 5 для SQL Server 2008 R2
Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2

SQL Server 2008 с пакетом обновления 2

Исправление для этой проблемы впервые выпущено в накопительном обновлении 2 для SQL Server 2008 с пакетом обновления 2. Чтобы получить дополнительные сведения об этом накопительном пакете обновления, щелкните следующий номер статьи базы знаний Майкрософт:
2467239 Накопительный пакет обновления 2 для SQL Server 2008 с пакетом обновления 2 (SP2)
Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008. Корпорация Microsoft рекомендует установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2402659 Сборки SQL Server 2008, выпущенные после выпуска пакета обновления 2 (SP2) для SQL Server 2008
Исправления Microsoft SQL Server 2008 создаются для конкретных пакетов обновления для SQL Server. Необходимо применить исправление для SQL Server 2008 с пакетом обновления 2 (SP2) к установке SQL Server 2008 с пакетом обновления 2. По умолчанию любое исправление, предоставленное в пакете обновления SQL Server, входит в следующий пакет обновления для SQL Server.

Обходное решение


Для решения этой проблемы используйте выражение с двумя смежными атрибутами из одного и того же измерения в запросе. Например, запрос многомерных выражений состоит из следующих значений:
WITH SET S AS CROSSJOIN([Product].[Large Photo].[Large Photo], [Product].[Product].[Product], [Customer].[Customer].[Customer])SELECT {} ON 0,S.ITEM(1) ON 1FROM [Adventureworks]

Статус


Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".