none
Problème de version du serveur de rapport (Reporting Services) RRS feed

  • Question

  • Bonjour à tous et merci à ceux qui prendront le temps de lire mon problème.

    Je travaille dans une entreprise sur une application en C# .NET (framework 4) qui comporte des fichiers de rapports (.rdlc) pour la génération de fichiers au format EXCEL, PDF et WORD. 

    Le projet avait été initialement mis en place et développé sur des versions de visual studio maintenant assez anciennes (2008/2013) et de même pour la version de SQL Server qui devait être la 2008 elle aussi.

    Aujourd'hui SQL Server est sous une version 2016 et je suis passé sur visual studio 2017.

    Lors de l'ouverture d'un fichier .rdlc sous visual studio 2017 ce dernier me demande la mise à jour de la version du fichier afin qu'il soit compatible avec le nouveau concepteur de rapport (sans quoi je ne peut l'éditer qu'en formal xml)

    Mon problème est que une fois ce fichier mis à jour sous la nouvelle version, si j'essaye de générer le rapport, j'ai l'exception suivante qui se lève : 

    "La définition de ce rapport n'est pas valide ou n'est pas prise en charge par cette version de Reporting Services. La définition de rapport peut avoir été créée avec une version ultérieure de Reporting Services ou inclure un contenu qui n'est pas bien formé ou qui n'est pas valide, en fonction des schémas de Reporting Services. Détails : La définition du rapport possède un espace de noms « http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition » non valide qui ne peut pas être mis à niveau."

    En regardant la définition des autres rapports non encore mis à jour, je peut voir que ceux si sont en :

    "http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"

    Si je suis la solution apporté par Drew Hansen sur le post suivant : https://stackoverflow.com/questions/38902037/ssrs-report-definition-is-newer-than-server, alors j'arrive bien a généré de nouveau mon rapport. 

    Mais bon cette solution n'est pas optimum car on contourne juste le problème, et pour chaque modification d'un rapport, je vais devoir le mettre à jour vers la definiton 2016 afin de le modifier dans le concepteur de rapports de visual studio 2017, pour ensuite modifier à nouveau la définition du rapport depuis le code xml en 2010... Pas ouf.

    Je me suis donc tourné vers SQL Server pour voir si les tables ReportServer$ et ReportServer$TempDB avaient un paramètre de compatibilité pour générer des rapports en version 2016

    J'ai trouvé ceci :

    

    Il était sur "SQL Server 2008 (100)", je l'ai passé en "SQL Server 2016 (130)" pour tester. Mais cela n'a rien changé, toujours la même exception se lève lors d'une génération d'un rapport mis a jour en version 2016... 

    En allant plus loin dans mes recherches j'ai trouvé une chose assez étrange.

    Il y a deux versions de "Reporting Services Configuration Manager" installer sur le serveur.

    La première en version SQL Server 2008 R2 qui me trouve bien l'instance du serveur de rapports et qui peut si connecter :

    La deuxième en version SQL Server 2016 qui ne trouve pas l'instance du serveur de rapports et qui ne peut donc pas si connecter :

    J'en viens donc la supposition suivante : je dois passer l'instance du serveur de rapport de la version 2008 vers 2016.

    Est-ce vraiment la solution ? Si oui comment faire ? Je n'est pas trouvé comment faire la mise à jour de moi même.. 

    Merci d'avance,

    Robin


    mardi 17 septembre 2019 15:09