CORRECTIF : Le message d'erreur « System.OverflowException : la valeur était trop grande ou trop petite pour un Int32 » s'affiche lorsque vous essayez de générer un rapport dans Microsoft SQL Server 2008 R2 Reporting Services

S’applique à : SQL Server 2008 R2

Microsoft distribue les correctifs de Microsoft SQL Server 2008 R2 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2008 R2 version du correctif.

Symptômes


Prenons l’exemple du scénario suivant :
  • Vous disposez d’un fichier de langage de définition de rapport (RDL) qui contient un contrôle de tableau matriciel dans Microsoft SQL Server 2008 R2 Reporting Services.
  • Vous ajoutez un groupe de lignes ou d’un groupe de colonnes à la commande Tablix et puis définissez une expression de groupe pour regrouper les données à l’aide d’une colonne possédant un type de données numérique.
  • Cette colonne contient une valeur qui ne figure pas dans la plage du type de données Int32 . Par exemple, une valeur de la colonne est 9000001777400270.
Dans ce scénario, le message d’erreur suivant s’affiche lorsque vous essayez de générer le rapport :
Une erreur s’est produite lors du traitement du rapport local. Une erreur s’est produite lors du traitement du rapport. La valeur était trop grande ou trop petite pour un Int32.

Résolution


Informations sur les mises à jour cumulatives

SQL Server 2008 R2

Le correctif de ce problème a été publié dans les 4 mise à jour Cumulative. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2008 R2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2345451 Mise à jour cumulative 4 pour SQL Server 2008 R2
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008 R2. Nous vous recommandons l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
981356 Versions de SQL Server 2008 R2 publiées après SQL Server 2008 R2

Solution de contournement


Pour contourner ce problème, convertissez le type de données numérique pour le type de données Double ou le type de données Int64 . Pour cela, procédez comme suit :
  1. Double-cliquez sur le groupe dans le volet Groupes de lignes ou Colonnes pour ouvrir les propriétés du groupe .
  2. Sous l’onglet Général , modifiez l’expression de groupe pour l’expression de type de données System.Double suivante :
    CDbl(Fields! < nom du champ >. Valeur)
    Ou encore, modifier l’expression de groupe pour le type de données System.Int64 suivant :
    CLng(Fields! < nom du champ >. Valeur)

Statut


Microsoft a confirmé l’existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.