代码之家  ›  专栏  ›  技术社区  ›  Hassan Mokdad

报表服务器无法解密用于访问报表服务器数据库中敏感或加密数据的对称密钥SSRS错误

  •  10
  • Hassan Mokdad  · 技术社区  · 12 年前

    尝试在SQL 2008 R2服务器上部署SSRS报表时,我遇到以下错误“报表服务器无法解密用于访问报表服务器数据库中敏感或加密数据的对称密钥…”。Web上的大多数解决方案都建议删除加密密钥,然后重新配置数据源。我还是SSRS的初学者,有其他解决方案可以解决这个问题吗,谢谢

    3 回复  |  直到 12 年前
        1
  •  20
  •   Hassan Mokdad    12 年前

    检查此链接后 Microsoft support link ,这似乎是SSRS报告中的一个已知问题。而且解决这个问题的唯一方法似乎是删除加密密钥。

    1. 打开Reporting Services配置工具(程序->Microsoft SQL 服务器2008 R2->配置工具->报告服务 配置管理器)
    2. 转到加密密钥
    3. 单击“删除”。

    这解决了我的问题

        2
  •  2
  •   Chad Rexin    10 年前

    在从Services.msc更改SQL Server Reporting Services帐户后,我在Microsoft Dynamics CRM 2016 Reporting Extensions安装程序中遇到了此问题。这是因为Microsoft Dynamics CRM 2016Reporting Extensions设置程序需要非本地服务帐户。 https://technet.microsoft.com/en-us/library/hh699754.aspx 这里的密钥触发器很可能是Haasan问题中看到的根本原因,是在没有备份加密密钥的情况下更改了SQL Server Reporting Services服务帐户。虽然他删除加密密钥的方法有效,但也有丢失加密信息的缺点,如果可能的话,您应该使用下面的步骤恢复到原始服务帐户用户,然后使用下面和参考文章中记录的步骤更改服务帐户。

    运行Microsoft Dynamics CRM Reporting Extensions所在的Microsoft SQL Server Reporting Services实例的标识帐户不能是本地系统或虚拟帐户。这是Microsoft Dynamics CRM报告工作所必需的,因为必须将标识帐户添加到Microsoft Dynamics CRM使用的PrivReportingGroup Active Directory安全组中。

    长话短说,在更改SQL Server Reporting Services帐户时,您需要从 SQL Server Services报告管理器 因为这将提示您备份SQL Server Reporting Services使用的对称加密密钥,并使用新的服务帐户用户将其还原。

    报表服务器服务使用对称密钥访问报表服务器数据库中的加密数据。此对称密钥是通过使用与用于运行报表服务器服务的计算机和用户帐户相对应的非对称公钥进行加密的。更改用于运行报表服务器服务的用户帐户时,报表服务器无法使用非对称公钥来解密对称密钥。因此,报表服务器服务无法使用对称密钥访问报表服务器数据库中的数据。

    从SQL Server Reporting Services Reporting Manager更改服务帐户时,将执行以下操作:

    自动将新帐户添加到本地计算机上创建的报表服务器组中。此组是在用于保护Reporting Services文件的访问控制列表(ACL)中指定的。 自动更新用于承载报表服务器数据库的SQL Server数据库引擎实例的登录权限。新帐户将被添加到RSExecRole中。 旧帐户的数据库登录将不会自动删除。请确保删除不再使用的帐户。有关详细信息,请参阅SQL Server联机丛书中的管理报表服务器数据库(SSRS本机模式)。 仅当您将报表服务器数据库连接配置为首先使用服务帐户时,才会向新服务帐户授予数据库权限。如果将报表服务器数据库连接配置为使用域用户帐户或SQL server数据库登录,则连接信息不受服务帐户更新的影响。 自动更新加密密钥以包含新帐户的配置文件信息。

    如果像我的场景一样,你碰巧知道以前的服务帐户用户是什么,修复方法是将SQL Server报表服务帐户用户更改回最初指定的帐户,然后使用SQL Server Reporting Services报表管理器更改帐户并确保备份加密密钥,因为在设置新的服务帐户用户时,该过程会自动恢复加密密钥。

    参考文献: https://msdn.microsoft.com/en-us/library/ms160340.aspx -配置报表服务器服务帐户(SSRS配置管理器)

    https://support.microsoft.com/en-us/kb/842421 -更改用于运行报表服务器服务的用户帐户后,重新启动报表服务器服务时,Reporting Services跟踪日志中会收到一条错误消息(这是一篇旧的KB文章,但一般问题和解决方案仍然适用于较新版本的SQL Reporting Services)

        3
  •  1
  •   Tom    11 年前

    如果删除密钥不是一种选择,希望这可以为某人节省一些时间。

    在将ReportServer和ReportServerTempDB从一个工作服务器移动到另一个运行ReportingServices的环境后,我遇到了这个问题。删除加密密钥不是一个选项,而且我知道用于创建加密密钥的密码,所以我从工作服务器上备份了密钥,并在新环境中使用Reporting Services Configuration Manager将其还原。刷新了页面,错误消失了。