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

时间:2017-12-12 17:54:06

标签: sql-server reporting-services sql-server-2016 sql-server-agent

我在没有可靠解决方案的情况下对此进行了大量搜索。

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

  

工作失败了。无法确定是否所有者   作业17F8E31D-0838-4829-8C3C-E3FE5BBD3483的(MyDomain \ ReportService)   有服务器访问权限(原因:无法获取有关Windows的信息   NT组/用户' MyDomain \ ReportService',错误代码0x5。 [SQLSTATE   42000](错误15404))。

当前设置:

  1. 使用Active Directory帐户作为服务帐户的SSRS 报告服务
  2. Sql Server 2016引擎使用Active Directory帐户作为服务 帐户名为SqlService
  3. SSRS和SQL数据库都在同一台计算机上
  4. 我仔细检查过SqlService是SysAdmin还是其他所有 权限和非SSRS作业运行良好
  5. 根据我的研究,我可以通过以下三种方式解决此问题:

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

    2. 我可以使SqlService成为一个     域管理员。出于安全考虑,我不想这样做,     明显。

    3. 我可以给SqlService" SeImpersonatePrivilege"     (通过安全性在我的域上模拟登录后的客户端)     政策。这也有效,但似乎会有一个     更好的方式,我认为这也是一个安全风险     设置它并不显式限制SqlService     冒充ReportService。

    4. 所以,我希望那些已经设置SSRS的人提出问题,允许SQL Server运行SSRS订阅的最佳做法是什么?我们的环境中有可能出现这种情况搞砸了权限明智,但我想我主要是在寻找关于如何设置 的建议。非常感谢你提前。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

Link

从上面列出的网站:

无法获取有关Windows NT组/用户'domainuser'的信息,错误代码为0x5。 [SQLSTATE 42000](错误15404)(ConnIsLoginSysAdmin)

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

然后,您可以在SQL Server上运行“EXECUTE AS USER ='domainuser'”进行检查。