SQL 代理中的 SSRS 订阅失败 - 无法确定作业所有者是否具有服务器访问权限

SSRS Subscription in SQL Agent Failing - Unable to determine if the owner of job has server access

我在这方面做了很多搜索,没有可靠的解决方案。

我刚刚在与 SQL 2016 实例相同的服务器上设置了一个新的 SSRS 实例。一切都是 运行 明智的报告,等等。问题是,当安排报告时,它会在 SQL 服务器中创建一个 Sql 代理作业,并且 SQL 代理出现以下错误:

The job failed. Unable to determine if the owner (MyDomain\ReportService) of job 17F8E31D-0838-4829-8C3C-E3FE5BBD3483 has server access (reason: Could not obtain information about Windows NT group/user 'MyDomain\ReportService', error code 0x5. [SQLSTATE 42000] (Error 15404)).

当前设置:

  1. SSRS 使用 Active Directory 帐户作为调用的服务帐户 报告服务
  2. Sql Server 2016 Engine 正在使用 Active Directory 帐户作为服务 名为 SqlService
  3. 的帐户
  4. SSRS 和 SQL 数据库都在同一台机器上
  5. 我仔细检查了 SqlService 是 SysAdmin 并且拥有所有其他 权限和非 SSRS 作业 运行 很好

根据我的研究,我可以通过以下三种方式之一解决此问题:

  1. 将 SSRS 创建的 SSRS SQL 代理作业更改为由 SA 所有(由 默认情况下,作业归 MyDomain\ReportService 所有。问题 这是每次用户创建时我都必须这样做 通过 SSRS 的新订阅或创建正在进行的脚本,因为 SSRS 默认情况下将使用该服务作为所有者。我知道这 我以前的雇主没有做过。

  2. 我可以使 Sql服务成为 域管理员。出于安全原因,我不想这样做, 显然。

  3. 我可以提供Sql服务"SeImpersonatePrivilege" (登录后模拟客户端)通过安全在我的域上 政策。这也有效,但似乎会有一个 更好的方法,我认为这也是一种安全风险 设置此项不会明确限制 SqlService 仅 模拟 ReportService。

所以,我的问题希望来自那些设置了 SSRS 的人,允许 SQL 服务器到 运行 SSRS 订阅的最佳实践是什么? 我们环境中的某些东西可能在权限方面被搞砸了,但我想我主要是在寻找关于如何应该设置的建议。非常感谢你提前。

我最终发现我们对服务帐户的活动目录权限有某种限制。我无法确定确切的权限,但在将帐户添加到明确允许查看活动目录用户和组的组后,它起作用了。所以,这是由于对基本域用户权限的异常限制。

Link

来自上面列出的站点:

无法获取有关 Windows NT group/user“domainuser”的信息,错误代码 0x5。 [SQL状态 42000](错误 15404)(ConnIsLoginSysAdmin)

解决方法是将 SQL 服务器服务帐户添加到 DC 上的“BUILTINWindows 授权访问组”。

然后您可以在 SQL 服务器上 运行 “EXECUTE AS USER = ‘domainuser’” 进行检查。