安裝Visual Studio 2010導緻BizTalk Server SSO服務無法啟動問題處理
鄭佐 2010-04-30
筆者在安裝上Visual Studio 2010和.NET 4.0後發現用于BizTalk Server的ENTSSO服務無法正常啟動。目标計算機上原先安裝有BizTalk Server 2009開發版和Enterprise Single Sign-On Service元件,資料庫伺服器采用SQL Server 2008 開發版。試圖通過Windows服務控制台手動啟動ENTSSO服務失敗,在Windows事件檢視器上會顯示如下警告資訊:
SSO AUDIT
Function: GetConfigInfo ({25DDFFC9-6ED9-4246-ADA7-BBC783A10598})
Tracking ID: 1681625e-2a36-4279-b7a5-27b2cae486cc
Client Computer: PC-ZZ (BTSNTSvc.exe:4704)
Client User: PC-ZZ/Administrator
Application Name: {0E0237C6-EB0E-4A9C-8F7B-57592E240119}
Error Code: 0xC0002A1F, Cannot perform encryption or decryption because the secret is not available from the master secret server. See the event log for related errors.
BizTalk Server 2009報如下錯誤資訊:
The Messaging Engine failed to retrieve the configuration from the database. Details:"c0002a1f".
通過BizTalk Server Configuration對ENTSSO和BizTalk Server進行重新配置,在配置SSO資料庫的時候出現錯誤,提示無法通路本機原先的SSODB資料庫,重建SSODB資料庫也不行,不過在SSO配置節右邊的資料庫配置下拉框中能看到資料庫伺服器上的各個資料庫清單,可以确定資料庫通路沒有問題,推斷是ENTSSO服務連結不上SQL Server。
打開SSO Administration管理控制台啟動ENTSSO操作失敗,通過Windows事件檢視器看到如下錯誤資訊:
Mapping server access denied.
由于是在安裝好Visual Studio 2010 三天後,使用Visual Studio 2008編譯部署BizTalk Server 2009項目的時候出現失敗才發現ENTSSO存在問題。是以,繼續往前查找三天前的錯誤和警告Windows日志資訊,終于發現解決問題的線索。下面是ENTSSO的一條錯誤資訊:
Could not create SSOSQL. To fix the problem, reinstall SSO or try 'regasm SSOSQL.dll' from a Visual Studio command prompt.
Error Code: 0x80131700
打開Visual Studio Command Prompt (2010),定位目前目錄到SSOSQL.DLL所在目錄"C:/Program Files/Common Files/Enterprise Single Sign-On" ,執行regasm SSOSQL.dll指令,運作結果顯示類型注冊成功。執行NET START ENTSSO指令,ENTSSO服務順利啟動,BizTalk 項目順利部署。
推論:根據錯誤日志資訊可能是在Visual Studio 2010安裝過程中安裝程式對SSOSQL.dll元件注冊資訊進行了修改,而ENTSSO服務通路SQL Server需要用到該元件由于無法通過注冊資訊找到該元件,進而導緻ENTSSO服務無法啟動,最終導緻BizTalk Server無法正常運作。
備注:如果在部署BizTalk應用程式或BizTalk Server調用ENTSSO的過程中出現失敗,ENTSSO運作異常,很多情況下也可能是主密鑰不比對問題,可以通過SSO Administration控制台執行密鑰恢複操作來解決。