Une petite mésaventure qui est arrivé à un de mes collègues lors de la migration de SQL Server 2005 à SQL Server 2008. Tout a bien fonctionné, la migration se passe sans encombre, tous les services repartent, les applications fonctionnent très bien sauf 1 rapport qui affiche cette erreur :
Index was out of range. Must be non negative and less than the size of the collection. Parameter name index
Nous avons donc réouvert le rapport sous Visual Studio pour voir ce qui pouvait clochait et pas de problème apparent, le rapport n’affichant même pas d’erreur dans la prévisualisation (qui n’est tout à fait pas le même moteur de rendu).
Après quelques périgrinations sur le web, je trouve un problème similaire avec des largeurs de colonnes dans la CTP2 (https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=338777&wa=wsignin1.0). Le problème était (celui-ci étant corrigé dans la RTM) que dans certains cas, l’éditeur mettait des -1 comme valeur d’attribut, ce qui n’est pas interprété par le renderer qui lève une exception.
Nous avons donc cherché s’il n’y avait pas de -1 dans le fichier RDL résultant de la migration et nous en avons trouvé. La migration ajoute des valeurs par défaut mais le moteur de rendu HTML de Reporting Services 2008 ne sait pas les traiter. Il faut donc aller supprimer ces -1 à la main (clic droit->View Code dans l’explorateur de solution).
<ChartArea Name="Default">
<ChartCategoryAxes>
<ChartAxis Name="Primary">
<ChartMinorGridLines>
<Enabled>False</Enabled>
<Interval>NaN</Interval>
<IntervalOffset>-1</IntervalOffset>
</ChartMinorGridLines>
</ChartAxis>
</ChartCategoryAxes>
</ChartArea Name="Default">
Ici, le problème se situait dans les lignes intermédiaires d’un graphique, pourtant désactivées.
PS : si vous aussi avez rencontré ce problème, merci de le signaler sur Connect pour une correction plus rapide de la part de Microsoft. Ca se passe ici : https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=382355