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)).
当前设置:
- SSRS 使用 Active Directory 帐户作为调用的服务帐户
报告服务
- Sql Server 2016 Engine 正在使用 Active Directory 帐户作为服务
名为 SqlService
的帐户
- SSRS 和 SQL 数据库都在同一台机器上
- 我仔细检查了 SqlService 是 SysAdmin 并且拥有所有其他
权限和非 SSRS 作业 运行 很好
根据我的研究,我可以通过以下三种方式之一解决此问题:
将 SSRS 创建的 SSRS SQL 代理作业更改为由 SA 所有(由
默认情况下,作业归 MyDomain\ReportService 所有。问题
这是每次用户创建时我都必须这样做
通过 SSRS 的新订阅或创建正在进行的脚本,因为 SSRS
默认情况下将使用该服务作为所有者。我知道这
我以前的雇主没有做过。
我可以使 Sql服务成为
域管理员。出于安全原因,我不想这样做,
显然。
我可以提供Sql服务"SeImpersonatePrivilege"
(登录后模拟客户端)通过安全在我的域上
政策。这也有效,但似乎会有一个
更好的方法,我认为这也是一种安全风险
设置此项不会明确限制 SqlService 仅
模拟 ReportService。
所以,我的问题希望来自那些设置了 SSRS 的人,允许 SQL 服务器到 运行 SSRS 订阅的最佳实践是什么? 我们环境中的某些东西可能在权限方面被搞砸了,但我想我主要是在寻找关于如何应该设置的建议。非常感谢你提前。
我最终发现我们对服务帐户的活动目录权限有某种限制。我无法确定确切的权限,但在将帐户添加到明确允许查看活动目录用户和组的组后,它起作用了。所以,这是由于对基本域用户权限的异常限制。
来自上面列出的站点:
无法获取有关 Windows NT group/user“domainuser”的信息,错误代码 0x5。 [SQL状态 42000](错误 15404)(ConnIsLoginSysAdmin)
解决方法是将 SQL 服务器服务帐户添加到 DC 上的“BUILTINWindows 授权访问组”。
然后您可以在 SQL 服务器上 运行 “EXECUTE AS USER = ‘domainuser’” 进行检查。
我在这方面做了很多搜索,没有可靠的解决方案。
我刚刚在与 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)).
当前设置:
- SSRS 使用 Active Directory 帐户作为调用的服务帐户 报告服务
- Sql Server 2016 Engine 正在使用 Active Directory 帐户作为服务 名为 SqlService 的帐户
- SSRS 和 SQL 数据库都在同一台机器上
- 我仔细检查了 SqlService 是 SysAdmin 并且拥有所有其他 权限和非 SSRS 作业 运行 很好
根据我的研究,我可以通过以下三种方式之一解决此问题:
将 SSRS 创建的 SSRS SQL 代理作业更改为由 SA 所有(由 默认情况下,作业归 MyDomain\ReportService 所有。问题 这是每次用户创建时我都必须这样做 通过 SSRS 的新订阅或创建正在进行的脚本,因为 SSRS 默认情况下将使用该服务作为所有者。我知道这 我以前的雇主没有做过。
我可以使 Sql服务成为 域管理员。出于安全原因,我不想这样做, 显然。
我可以提供Sql服务"SeImpersonatePrivilege" (登录后模拟客户端)通过安全在我的域上 政策。这也有效,但似乎会有一个 更好的方法,我认为这也是一种安全风险 设置此项不会明确限制 SqlService 仅 模拟 ReportService。
所以,我的问题希望来自那些设置了 SSRS 的人,允许 SQL 服务器到 运行 SSRS 订阅的最佳实践是什么? 我们环境中的某些东西可能在权限方面被搞砸了,但我想我主要是在寻找关于如何应该设置的建议。非常感谢你提前。
我最终发现我们对服务帐户的活动目录权限有某种限制。我无法确定确切的权限,但在将帐户添加到明确允许查看活动目录用户和组的组后,它起作用了。所以,这是由于对基本域用户权限的异常限制。
来自上面列出的站点:
无法获取有关 Windows NT group/user“domainuser”的信息,错误代码 0x5。 [SQL状态 42000](错误 15404)(ConnIsLoginSysAdmin)
解决方法是将 SQL 服务器服务帐户添加到 DC 上的“BUILTINWindows 授权访问组”。
然后您可以在 SQL 服务器上 运行 “EXECUTE AS USER = ‘domainuser’” 进行检查。