Déploiement d’un assembly personnalisé

Pour déployer un assembly personnalisé dans SQL Server Reporting Services, placez-le dans les dossiers d’application du Concepteur de rapports et du serveur de rapports. L’autorisation Execution dans Reporting Services est accordée par défaut aux assemblys personnalisés. Pour accorder des privilèges d’assemblys personnalisés au-delà de l’autorisation d’exécution, vous devez modifier le fichier de configuration rssrvpolicy.config pour le serveur de rapports et le fichier de configuration rspreviewpolicy.config pour la fenêtre d’aperçu Concepteur de rapports. Une autre solution consiste à installer votre assembly personnalisé dans le Global Assembly Cache (GAC).

Notes

Il y a deux modes d’aperçu pour le Concepteur de rapports : l’onglet Aperçu et la fenêtre d’aperçu contextuelle, qui s’affiche quand votre projet de rapport démarre en mode DebugLocal. L’onglet Aperçu exécute toutes les expressions de rapport à l’aide de l’autorisation FullTrust définie et n’applique pas de paramètres de stratégie de sécurité. La fenêtre d'aperçu contextuelle a pour but de simuler les fonctionnalités du serveur de rapports ; par conséquent, elle dispose d'un fichier de configuration de stratégie qu'un administrateur ou vous-même devez modifier pour utiliser des assemblys dans le Générateur de rapports. Cet aperçu contextuel verrouille également l'assembly personnalisé. Par conséquent, vous devez fermer la fenêtre d'aperçu afin de modifier ou mettre à jour le code de votre assembly personnalisé.

Déployer un assembly personnalisé dans Reporting Services

  1. Copiez votre assembly personnalisé à partir de votre emplacement de génération vers le dossier bin du serveur de rapports ou le dossier du Générateur de rapports.

    Si vous placez votre assembly personnalisé dans le dossier bin du serveur de rapports, vous pouvez publier des rapports qui font référence à votre assembly personnalisé. L’emplacement par défaut du dossier bin du serveur de rapports est le suivant :

    Reporting Services 2016

    %ProgramFiles%\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin
    

    Reporting Services 2017 et versions ultérieures

    %ProgramFiles%\Microsoft SQL Server Reporting Services\SSRS\ReportServer\bin
    

    Si vous le placez dans le dossier du Concepteur de rapports, vous pouvez exécuter et déboguer les rapports qui font référence à votre assembly personnalisé dans le Concepteur de rapports. L'emplacement par défaut du Concepteur de rapports est le suivant :

    Visual Studio 2012

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies
    

    Visual Studio 2013

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
    

    Visual Studio 2015

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies
    

    Visual Studio 2017

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS
    

    Visual Studio 2019

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS
    
  2. Ouvrez le fichier de configuration approprié. L’emplacement par défaut de rssrvpolicy.config du serveur de rapports est le suivant :

    Reporting Services 2016

    %ProgramFiles%\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer
    

    Reporting Services 2017 et versions ultérieures

    %ProgramFiles%\Microsoft SQL Server Reporting Services\SSRS\ReportServer
    

    Les fichiers à mettre à jour pour le Concepteur de rapports sont :

    Visual Studio 2012

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\PreviewProcessingService.exe.config
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\RSReportDesigner.config
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\RSReportHost11.exe.config
    

    Visual Studio 2013

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\PreviewProcessingService.exe.config
    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config
    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\RSReportDesigner.config
    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\RSReportHost.exe.config
    

    Visual Studio 2015

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies\PreviewProcessingService.exe.config
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies\RSReportDesigner.config
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies\RSReportHost.exe.config
    

    Visual Studio 2017

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\PreviewProcessingService.exe.config
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSPreviewPolicy.config
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportDesigner.config
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportHost.exe.config
    

    Visual Studio 2019

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\PreviewProcessingService.exe.config
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSPreviewPolicy.config
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportDesigner.config
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSRS\RSReportHost.exe.config
    
  3. Ajoutez un groupe de codes pour votre assembly personnalisé. Pour plus d’informations, consultez Développement sécurisé (Reporting Services).

Mettre à jour des assemblys personnalisés

À un moment donné, vous devrez peut-être mettre à jour une version d’un assembly personnalisé référencé par plusieurs rapports publiés. Si cet assembly existe déjà dans le répertoire bin du serveur de rapports ou Concepteur de rapports, et que le numéro de version de l’assembly est incrémenté ou modifié d’une certaine manière, les rapports actuellement publiés ne fonctionnent pas correctement. Vous devez mettre à jour la version de l’assembly référencée dans l’élément CodeModules de la définition de rapport et republier les rapports. Si vous savez que vous allez fréquemment mettre à jour un assembly personnalisé et que vos rapports actuellement publiés doivent référencer le nouvel assembly, vous pouvez envisager d’utiliser le même numéro de version dans toutes les mises à jour d’un assembly particulier.

Si vous n’avez pas besoin de vos rapports actuellement publiés pour référencer la nouvelle version de l’assembly, vous pouvez déployer votre assembly personnalisé dans le Global Assembly Cache. Le Global Assembly Cache peut gérer plusieurs versions du même assembly, afin que vos rapports actuels puissent référencer la version antérieure de votre assembly et que vos nouveaux rapports publiés puissent référencer l'assembly mis à jour. Pourtant, une autre approche consisterait à définir la redirection de liaison du serveur de rapports afin de forcer une redirection de toutes les demandes de l'ancien assembly vers le nouvel assembly. Il vous faudrait modifier le fichier Web.config du serveur de rapports et le fichier ReportingServicesService.exe.config du serveur de rapports. L’entrée peut ressembler à l’exemple suivant :

<configuration>  
   <runtime>  
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
         <dependentAssembly>  
            <assemblyIdentity name="myAssembly"  
                              publicKeyToken="32ab4ba45e0a69a1"  
                              culture="neutral" />  
            <bindingRedirect oldVersion="1.0.0.0"  
                             newVersion="2.0.0.0"/>  
         </dependentAssembly>  
      </assemblyBinding>  
   </runtime>  
</configuration>  

Utilisation d'assemblages personnalisés avec des rapports
Utilisation d'assemblys et du Global Assembly Cache