天天看点

安装Visual Studio 2010导致BizTalk Server SSO服务无法启动问题处理

安装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控制台执行密钥恢复操作来解决。