部署自定义程序集

为了在 SQL Server Reporting Services 中部署自定义程序集,请将程序集同时放到报表设计器和报表服务器的应用程序文件夹中。 默认情况下,将在 Reporting Services 中向自定义程序集授予 Execution 权限 。 若要授予超出“执行”权限的自定义程序集权限,需要编辑报表服务器的 rssrvpolicy.config 配置文件和 报表设计器 预览窗口的 rspreviewpolicy.config 配置文件。 也可以选择将自定义程序集安装到全局程序集缓存 (GAC) 中。

注意

报表设计器有两种预览模式:预览选项卡以及在以 DebugLocal 模式启动报表项目时启动的弹出式预览窗口 。 “预览”选项卡使用 FullTrust 权限集执行所有报表表达式,它不应用安全策略设置 。 弹出式预览窗口旨在模拟报表服务器的功能,因此具有策略配置文件,您或管理员必须修改该文件才能在报表设计器中使用自定义程序集。 此弹出式预览还锁定自定义程序集。 因此,您需要关闭预览窗口,才能修改或更新自定义程序集代码。

在 Reporting Services 中部署自定义程序集

  1. 将自定义程序集从生成位置复制到报表服务器的 bin 文件夹或报表设计器文件夹中。

    如果将自定义程序集置于报表服务器的 bin 文件夹中,则可以发布引用这些自定义程序集的报表。 报表服务器的 bin 文件夹的默认位置为:

    Reporting Services 2016

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

    Reporting Services 2017 及更高版本

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

    如果将其置于报表设计器文件夹中,则可以在报表设计器中运行并调试引用自定义程序集的报表。 报表设计器的默认位置为:

    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. 打开相应的配置文件。 报表服务器的 rssrvpolicy.config 的默认位置为:

    Reporting Services 2016

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

    Reporting Services 2017 及更高版本

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

    要为报表设计器更新的文件包括:

    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. 为自定义程序集添加代码组。 有关详细信息,请参阅安全开发 (Reporting Services)

更新自定义程序集

有时,可能需要更新多个已发布报表引用的自定义程序集的版本。 如果该程序集已存在于报表服务器或报表设计器的 bin 目录中,并且程序集的版本号以某种方式递增或更改,则当前发布的报表将无法正常工作。 需要更新报表定义 CodeModules 元素中引用的程序集的版本,并重新发布报表。 如果知道经常更新自定义程序集,并且当前发布的报表需要引用新程序集,则可能需要考虑在特定程序集的所有更新中使用相同的版本号。

如果不需要当前发布的报表来引用程序集的新版本,则可以将自定义程序集部署到全局程序集缓存。 全局程序集缓存可以保持同一个程序集的多个版本,这样,您当前的报表可以引用程序集的前一个版本,而新发布的报表可以引用更新后的程序集。 此外,另一个方法是设置报表服务器的绑定重定向,以强制将旧程序集的所有请求重定向到新程序集。 你需要修改报表服务器 Web.config 文件和报表服务器 ReportingServicesService.exe.config 文件。 该条目可能如以下示例所示:

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