Implantação de um conjunto personalizado

Para implementar um assembly personalizado no SQL Server Reporting Services, coloque o assembly nas pastas de aplicação tanto do Report Designer como do servidor de relatórios. Por defeito, assemblies personalizados recebem permissão de Execução no Reporting Services. Para conceder privilégios de assemblies personalizados para além da permissão de Execução, precisa de editar o ficheiro de configuração rssrvpolicy.config para o servidor de relatórios e o ficheiro de configuração rspreviewpolicy.config para a janela de pré-visualização Report Designer. Em alternativa, pode instalar a sua assembly personalizada na cache global assembly (GAC).

Note

Existem dois modos de pré-visualização para o Report Designer: o separador Pré-visualização e a janela de pré-visualização pop-up que é lançada quando o seu projeto de relatório é iniciado no modo DebugLocal. O separador Pré-visualização executa todas as expressões de relatório usando o conjunto de permissões FullTrust e não aplica definições de políticas de segurança. A janela de pré-visualização pop-up destina-se a simular a funcionalidade do servidor de relatórios e, por isso, tem um ficheiro de configuração de políticas que você ou um administrador deve modificar para usar assemblies personalizados no Report Designer. Esta pré-visualização pop-up também bloqueia a montagem personalizada. Por isso, precisa de fechar a janela de pré-visualização para poder modificar ou atualizar o seu código de montagem personalizado.

Implementar um assembly personalizado no Reporting Services

  1. Copie o seu assembly personalizado do local de construção para a pasta bin do servidor de relatórios ou para a pasta Report Designer.

    Colocar a sua montagem personalizada na pasta bin do servidor de relatórios permite-lhe publicar relatórios que referenciam a sua montagem personalizada. A localização padrão da pasta bin do servidor de relatórios é:

    Reporting Services 2016

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

    Reporting Services 2017 e posteriores

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

    Colocá-lo na pasta Report Designer permite-lhe executar e depurar relatórios que referenciam a sua montagem personalizada no Report Designer. A localização padrão do Report Designer é:

    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. Abra o ficheiro de configuração apropriado. A localização padrão da rssrvpolicy.config para o servidor de relatórios é:

    Reporting Services 2016

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

    Reporting Services 2017 e posteriores

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

    Os ficheiros a atualizar para o Report Designer são:

    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. Adiciona um grupo de código para a tua montagem personalizada. Para mais informações, consulte Secure Development (Reporting Services).

Atualizar assemblies personalizados

Em algum momento, poderá precisar de atualizar uma versão de um assembly personalizado referenciado por vários relatórios publicados. Se esse assembly já existir no diretório bin do servidor de relatórios ou do Report Designer, e o número de versão do assembly for incrementado ou alterado de alguma forma, os relatórios atualmente publicados não funcionarão corretamente. Terá de atualizar a versão do assembly referenciada no elemento CodeModules da definição do relatório e republicar os relatórios. Se sabe que vai atualizar frequentemente uma montagem personalizada, e os seus relatórios atualmente publicados precisam de referenciar a nova montagem, pode querer considerar usar o mesmo número de versão em todas as atualizações de uma determinada montagem.

Se não precisares dos teus relatórios atualmente publicados para referenciar a nova versão do assembly, podes implementar o teu assembly personalizado para o cache global de assembly. A cache global de montagem pode manter múltiplas versões da mesma assembleia, para que os seus relatórios atuais possam referenciar a versão anterior da sua montagem e os seus relatórios recém-publicados possam referenciar a montagem atualizada. Outra abordagem seria definir o redirecionamento vinculativo do servidor de relatórios para forçar o redirecionamento de todos os pedidos do assembly antigo para o novo assembly. Terias de modificar o ficheiro Web.config do servidor de relatórios e o ficheiro ReportingServicesService.exe.config servidor de relatórios. A entrada pode assemelhar-se ao seguinte exemplo:

<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>