Исправление: «System.OverflowException: значение было слишком велик или слишком мал для 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.
  • Добавление группы строк или группы столбцов в Tablix элемент управления и задайте выражение группы для группирования данных при помощи столбца с числовым типом данных.
  • Этот столбец содержит значение, которое не находится в диапазоне типа данных Int32 . Например значение столбца равно 9000001777400270.
В этом случае появляется следующее сообщение об ошибке при попытке создать отчет:
Произошла ошибка при локальной обработке отчета. Произошла ошибка во время обработки отчета. Значение было слишком большой или слишком большим для Int32.

Решение


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

SQL Server 2008 R2

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

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


Чтобы обойти эту проблему, преобразуйте числовой тип данных в тип данных Double или тип данных Int64 . Для этого выполните следующие действия:
  1. Дважды щелкните группу в области Группы строк или Группы столбцов , чтобы открыть окно свойств группы .
  2. На вкладке Общие измените выражение группы следующее выражение типа System.Double данных:
    CDbl(Fields! < имя поля >. Значение)
    Или изменить выражение группы для следующих типов System.Int64 :
    CLng(Fields! < имя поля >. Значение)

Статус


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