【问题标题】:The report server can’t connect to its database报表服务器无法连接到其数据库
【发布时间】:2018-08-25 15:50:28
【问题描述】:

我正在尝试配置一个 SSRS 实例,但收效甚微。

我已经在服务器 DWHFRONT 上安装了 SSRS。它在网络服务凭据下运行。在 Reporting Services 配置管理器的“数据库”选项卡上,我已将其设置为使用 DWHBACK 上的数据库,该数据库已成功创建。该连接使用域帐户 DOM\SA_DWH。我为 DOM\SA_DWH 添加了一个登录到服务器 DWHBACK,我可以看到 Reporting Services 管理器将授权添加到 SSRS 数据库。配置管理器接受这些连接参数。

但是(在设置 URL、虚拟目录等之后)如果我访问 DWHFRONT/Reports/ 的 URL,我会收到一条错误消息:

服务不可用。

报表服务器配置不正确。请与您的系统管理员联系以解决该问题。系统管理员:报表服务器无法连接到其数据库,因为它没有这样做的权限。使用 Reporting Services 配置管理器更新报表服务器数据库凭据。

起初我认为这可能是一个问题,因为尚未将注释部署到 SSRS 实例。但是,当我尝试部署某些东西时,我在 BIDS 中收到此错误:

报表服务器无法打开与报表服务器数据库的连接。所有请求和处理都需要连接到数据库。 ---> Microsoft.ReportingServices.Library.ReportServerDatabaseUnavailableException:报表服务器无法打开与报表服务器数据库的连接。所有请求和处理都需要连接到数据库。 (Microsoft.ReportingServices.Designer)

【问题讨论】:

  • 您确定 SQL Server 已正确配置为使用域登录吗? “我为 DOM\SQ_DWH 创建了登录 DWHBACK”这句话最初让我觉得没有必要?
  • @DavidW 如果我不为 DOMAIN\SA_DWH 创建登录名,则用户无法连接到服务器...而且我只创建了服务器级登录名; SSRS、SSRS_TEMP 数据库的权限以及 Master 和 MSDB 的特殊角色都是由 SSRS 配置工具创建的。
  • 好吧,我的想法是,如果 SQL Server 已配置为混合模式安全性,您不必创建单独的登录 - 也就是说,您应该能够导入完整的 AD 帐户(DOM \SA_DWH) 直接从登录对话框....
  • @DavidW 这我创建登录的方式。
  • 够了,那么;这是我想到的第一件事。很抱歉没有提供更多帮助:(

标签: sql-server reporting-services


【解决方案1】:
  1. 检查 SQL 日志是否有任何错误
  2. 在 SQL Server 上运行 SQL 配置文件以捕获任何连接/权限错误
  3. 尝试重新输入域帐户的权限
  4. 检查域帐户未禁用/锁定/密码过期
  5. 尝试在连接报表服务器数据库的同一个 AD 帐户下运行 SSRS 服务。
  6. 尝试在两台服务器上同时启用命名管道(协议和客户端协议)
  7. 尝试删除加密密钥并重新创建它们。
  8. 尝试其他域用户并检查所有 DB(ReportServer、ReportServer Temp、msdb)中授予的权限,检查每个 DB 中的 DB 用户是否映射到有效的 SID)
  9. 尝试为该 AD 帐户授予 SQL Server 系统管理员权限(临时)。
  10. 检查 SSRS 日志是否有任何错误(最好附上它们)。
  11. 检查事件查看器 --> 安全性 --> SQL Server 审核失败

【讨论】:

    【解决方案2】:

    您可以执行以下测试以检查它是否可以解决您的问题?:

    1. 添加具有临时高权限的帐户 [DOM\DWHFRONT$],例如 SYSADMIN 到 SQL 实例 DWHBACK(SA 是一种时间度量,待测试后删除)
    2. 将 SSRS 服务帐户更改为:“本地系统”
    3. 重新创建 ReportServer 数据库并选择凭据:“服务凭据”

    附言我们遇到了在网络服务凭据下运行的最新版本 SSRS 的问题..

    【讨论】:

      【解决方案3】:

      这听起来很像“双跳”问题。

      这可以通过 Reporting Services 实例上的enabling remote errors 来确认。然后,当您连接到报告门户时,您应该会看到原始错误以及“用户 NTAUTHORITY\ANONYMOUS LOGON 登录失败”。如果是这样,那么这很可能是 Kerberos 委派问题。

      当您在不同的服务器上托管 SSRS 服务和目标数据库时,您几乎总是会遇到“双跳”问题,这需要配置 Kerberos 委派以使 SSRS 能够重用用户凭据来访问数据库跨服务器。

      Pinal Dave 在 SQL Server 的上下文中写了一篇很好的博客。

      要启用委派,您首先需要确保您的 SPN 配置正确。 Here 是一个很好的工具来帮助解决这个问题。我会在您的 SSRS 服务器和数据库服务器上运行它,以确保两台服务器的 SPN 配置正确。

      配置 SPN 后,您需要在 Active Directory 中使用enable delegation。这需要为您的 DOM\SA_DWH 帐户完成。

      【讨论】:

      • 为什么会是“双跳”?我让用户 X 与 SSRS Web 服务交互,并且该 Web 服务使用一组完全不同的凭据 (SA_DWH) 连接到数据库。两个单跳。在我看来……
      • 你了解委托的概念吗?双跳是用于描述将用户凭据传递到辅助连接的操作的措辞……即使您认为这是两个单跳。 This 解释了基本概念。本质上,SSRS 需要权限才能通过新连接将用户凭据传递到单独的服务器。否则,您将如何验证用户对数据库的访问权限,或针对模式或行级安全性?
      【解决方案4】:

      感谢所有建议,它让我走上了正轨!

      域帐户 SA_DWH 被禁止交互式登录。 SSRS 显然确实需要这个。交互式登录限制已解除,现在可以使用了。

      【讨论】:

        猜你喜欢
        • 2017-03-17
        • 1970-01-01
        • 2015-02-17
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多