Poprawka: "System.OverflowException: wartość była za duża albo za mała dla wartości typu Int32" występuje komunikat o błędzie podczas próby wygenerowania raportu Microsoft SQL Server 2008 R2 Reporting Services

Dotyczy: SQL Server 2008 R2

Firma Microsoft rozpowszechnia poprawki programu Microsoft SQL Server 2008 R2 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 R2 Release.

Symptomy


Rozpatrzmy następujący scenariusz:
  • Masz plik języka definicji raportu (RDL), który zawiera formant Tablix w Microsoft SQL Server 2008 R2 Reporting Services.
  • Dodawanie grupy wierszy lub grupy kolumn do formantu elementu Tablix , a następnie ustawić wyrażenie grupy do grupowania danych przy użyciu kolumny, która ma typ danych numerycznych.
  • Ta kolumna zawiera wartość, która nie jest w zasięgu danych typu Int32 . Na przykład wartość kolumny jest 9000001777400270.
W tym scenariuszu pojawić następujący komunikat o błędzie podczas próby generowania raportu:
Wystąpił błąd podczas przetwarzania raport lokalny. Wystąpił błąd podczas przetwarzania raportu. Wartość jest za duża albo za mała dla wartości typu Int32.

Rozwiązanie


Informacje dotyczące zbiorczej aktualizacji

Program SQL Server 2008 R2

Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 4. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2345451 Skumulowany pakiet aktualizacji 4 dla programu SQL Server 2008 R2
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 R2 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
981356 SQL Server 2008 R2 buduje wydane po wydaniu programu SQL Server 2008 R2

Obejście


Aby obejść ten problem, należy przekonwertować typ danych numerycznych na Podwójny typ danych lub Int64 typ danych. Aby to zrobić, wykonaj następujące czynności:
  1. Kliknij dwukrotnie grupę w okienku Grup wierszy lub Kolumn grup , aby otworzyć właściwości grupy .
  2. Na karcie Ogólne Zmień wyrażenie grupy oparte na następujące wyrażenie typu danych System.Double :
    CDbl(Fields! < nazwa pola >. Wartość)
    Można też zmienić wyrażenie grupy do typów danych System.Int64 :
    CLng(Fields! < nazwa pola >. Wartość)

Stan


Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Informacje