KB2359606 - ИСПРАВЛЕНО: сообщение об ошибке "System.OverflowException: Value was or too small for an Int32" возникает при попытке создания отчета в службах Microsoft SQL Server 2008 R2 Reporting Services

Применяется к
SQL Server 2008 R2

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 в виде одного загружаемого файла. Поскольку исправления являются накопительными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые входили в предыдущий выпуск исправления SQL Server 2008 R2.

Проблема

Рассмотрим следующий сценарий.

  • У вас есть файл языка определения отчетов (RDL), который содержит элемент управления Tablix в службах Microsoft SQL Server 2008 R2 Reporting Services.
  • В элемент управления "Табликс" добавляется группа строк или столбцов, а затем задается групповое выражение для данных группы, используя столбец с числовым типом данных.
  • Этот столбец содержит значение, которое не входит в диапазон типа данных Int32. Например, значение столбца — 9000001777400270.

В этом случае при попытке создать отчет выводится следующее сообщение об ошибке:

Примечание

Во время обработки локального отчета произошла ошибка.
     Во время обработки отчета произошла ошибка.
     Значение было либо слишком большим, либо слишком маленьким для Int32.

      

Решение

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

SQL Server 2008 R2

Исправление для этой проблемы впервые выпущено в накопительном пакете обновления 4. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, см. в следующей статье базы знаний Майкрософт:

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

981356 сборки SQL Server 2008 R2, выпущенные после выхода SQL Server 2008 R2

Временное решение

Чтобы обойти эту проблему, преобразуйте числовой тип данных в тип данных Double или Int64. Для этого выполните указанные ниже действия.

  1. Дважды щелкните группу в области "Группы строк " или " Группы столбцов ", чтобы открыть свойства группы .

  2. На вкладке "Общие " измените выражение группы на следующее выражение типа данных System.Double.

    CDbl(Поля!<Имя> поля. Значение)Или измените выражение группы на следующий тип данных System.Int64:

    CLng(Поля!<Имя> поля. Значение)

Состояние

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

Ссылки

Дополнительные сведения о типах данных см. на следующих веб-сайтах:

Общие сведения о «десятичной» структуре

Общие сведения о структуре "Int32"

Общие сведения о структуре "Int64"

Общие сведения о структуре «Дубль»