首页 > 代码库 > KB: Operations Manager为什么刚装好就显示数据访问服务SPN未注册

KB: Operations Manager为什么刚装好就显示数据访问服务SPN未注册

对于我这种强迫症患者,服务账号能用域账号就不用本地的。微软最佳实践也是这么建议的,于是我在安装SCOM的时候就是按照下面这样来规划账户的。

用户名

用途

权限级别

类型

隶属于

acertwp\svcomda

OM数据访问服务和配置服务帐户

低权域用户

用户

SQL本地管理员
SCOM本地管理员

acertwp\svcomw

OM数据仓库写入账户

低权域用户

用户

SQL本地管理员
SCOM本地管理员

acertwp\svcomr

OM报表查询账户

低权域用户

用户

SQL本地管理员
SCOM本地管理员

所以我在配置SCOM账户的时候是这样子的:

那么问题来了,为毛我才装好没多久的SCOM就报警了呢,我还没做啥坏事呢

警报描述如下:

The System Center Data Access service failed to register an SPN. A domain admin needs to add MSOMSdkSvc/SZSRVOM01v and MSOMSdkSvc/SZSRVOM01v.acertwp.com to the servicePrincipalName of CN=SZSRVOM01V,OU=Servers,DC=acertwp,DC=com

为什么会报错呢,因为我们每次重启机器/服务的时候都会做一个动作,System Center Data Access Service这个服务会尝试去找AD验证这个服务的SPN在域里面是否有注册。但是在域里面,一个低权限的Domain User是没有权限去注册SPN的,所以需要域管理员去做这件事情。

可是为什么还会报这个错呢,我在安装的时候用的账号是域管理员啊,这里其实是个BUG。而且这个BUG由来已久,已经伴随了OM 2012 、OM2012 SP1和 OM2012 R2整整三代产品了。大家仔细看这个警报的描述,这是让我用SZSRVOM01v这个计算机账户去注册SPN,可是我明明是用acertwp\svcomda这个账号去做服务账号的,要注册SPN也是为acertwp\svcomda这个账号注册。

我们可以通过下面这个命令来获取acertwp\svcomda这个账户注册的SPN(把账号替换成自己设置的账号):

C:\Users\administrator.ACERTWP>setspn L acertwp\svcomda


输出的内容应该是这个样子的

Registered ServicePrincipalNames 用于 CN=SVCOMDA,OU=Service,OU=MIS,DC=acertwp,DC
=com:
MSOMSdkSvc/SZSRVOM01v.acertwp.com
MSOMSdkSvc/SZSRVOM01v

但是我们实际可能看到输出内容是这个样子的

Registered ServicePrincipalNames 用于 CN=SVCOMDA,OU=Service,OU=MIS,DC=acertwp,DC
=com:



这时候就需要我们手工来添加这个SPN了。

然后我们来看下SZSRVOM01v这个计算机账户的SPN:

C:\Users\administrator.ACERTWP>setspn -l SZSRVOM01v


输出的内容是这样子的

Registered ServicePrincipalNames 用于 CN=SZSRVOM01V,OU=Servers,DC=acertwp,DC=com:
MSOMHSvc/SZSRVOM01v.acertwp.com
MSOMHSvc/SZSRVOM01V
WSMAN/SZSRVOM01v
WSMAN/SZSRVOM01v.acertwp.com
TERMSRV/SZSRVOM01V
TERMSRV/SZSRVOM01v.acertwp.com
RestrictedKrbHost/SZSRVOM01V
HOST/SZSRVOM01V
RestrictedKrbHost/SZSRVOM01v.acertwp.com
HOST/SZSRVOM01v.acertwp.com

既然知道了来龙去脉,我们要怎么修复这个问题呢?

首先我们得有一个域管理员的账号,然后我们用这个账号随意登录一台域里面的机器。打开CMD(管理员模式),执行以下两条命令:

setspn –s MSOMSdkSvc/SZSRVOM01v.acertwp.com ACERTWP\svcomda
setspn -s MSOMSdkSvc/SCOM01 ACERTWP\svcomda


再回到最初的命令,查询acertwp\svcomda注册的SPN

setspn –L acertwp\svcomda


这时候的输出就变成

Registered ServicePrincipalNames 用于CN=SVCOMDA,OU=Service,OU=MIS,DC=acertwp,DC
=com:
 
       MSOMSdkSvc/SZSRVOM01v.acertwp.com
       MSOMSdkSvc/SZSRVOM01v


然后我们把警报关闭掉,不再报错了。。。这个世界终于安静了。


本文出自 “微软技术之路” 博客,请务必保留此出处http://autodiscover.blog.51cto.com/5759621/1582584

KB: Operations Manager为什么刚装好就显示数据访问服务SPN未注册