我创建使用脚本一个SQL Server复制。 当我尝试执行
The job failed. Unable to determine if the owner (STAR\moorer7) of job L3BPT2M-Atlas-14 has server access (reason: Could not obtain information about Windows NT group/user 'STAR\moorer7', error code 0x5. [SQLSTATE 42000] (Error 15404)).
这是由定义复制的脚本创建工作。
如何调试呢?
Active Directory的拒绝访问您的SQL代理。 代理应该由星域控制器识别的帐户下运行。
对我来说,工作是在DOMAIN \ Administrator的运行,并显示错误消息失败"The job failed. Unable to determine if the owner (DOMAIN\administrator) of job Agent history clean up: distribution has server access (reason: Could not obtain information about Windows NT group/user 'DOMAIN\administrator', error code 0x5. [SQLSTATE 42000] (Error 15404)).
为了解决这个问题, 我改变了每一个失败的作业,以所有者sa
。之后准确无误地运行。该工作是有关复制清理,但我不能确定,如果他们手动添加或添加为复制建立的一部分 - 我没有参与,所以我不知道。
我们在测试环境中遇到的一个虚拟机上类似的错误。 如果机器名称从模板虚拟机克隆的变化,由于,你可以得到这个错误。
如果计算机名从OLD变更为NEW。
作业使用这个存储过程:
msdb.dbo.sp_sqlagent_has_server_access @login_name = 'OLD\Administrator'
使用这种之一:
EXECUTE master.dbo.xp_logininfo 'OLD\Administrator'
这给这个SQL错误15404
select text from sys.messages where message_id = 15404;
Could not obtain information about Windows NT group/user '%ls', error code %#lx.
我的猜测是正确的,在这种情况下。 我们增加了一个脚本到重新创建SQL登录的虚拟机克隆/部署过程。
在我来说,我得到这个错误尝试使用IS_ROLEMEMBER()
SQL Server 2008 R2上的功能。 这个功能是不是之前的SQL Server 2012中有效。
相反,这个功能我最终使用
select 1
from sys.database_principals u
inner join sys.database_role_members ur
on u.principal_id = ur.member_principal_id
inner join sys.database_principals r
on ur.role_principal_id = r.principal_id
where r.name = @role_name
and u.name = @username
显著更详细的,但它能够完成任务。
只要解决了这个问题。 在我的情况下,它是域控制器是无法访问的,因为这两个DNS服务器是谷歌DNS。
我刚加入清单,针对此问题:
我也有同样的问题,这竟然是由运行SQL服务于公元被锁定域名注册引起的。 锁定由服务帐户与密码错误另一个目的无关的用途引起的。
从SQL Agent日志中收到的错误并没有提及该服务帐户的名称,用户(作业所有者)的只是名字不能被验证的(因为它使用的服务帐户检查与AD)。