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


然後我們把警報關閉掉,不再報錯了。。。這個世界終於安靜了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章