Fix System Center Orchestrator Runbook Service Error %%-2147467259 And HttpWebRequest_WebException_RemoteServer

现象及背景

  1. 更新了Orchestrator 2012 R2 KB4047356,同时应用了KB4058494
  2. 服务中Orchestrator Runbook Service 无法启动,查看system 日志中发现下面报错:
Orchestrator Runbook Service 服务因下列错误而停止: 
%%-2147467259
  1. 根据Kb2702157 中的说明,应该可能是数据库连接不上的问题,所以我们看了下C:\ProgramData\Microsoft System Center 2012\Orchestrator\RunbookService.exe\Logs下的日志文件,发现下面错误。
Process ID: 25104
Version   : 7.2.239.0
Computer  : SC2012ORC01
User      : MSFUNDS\orchestratorService

2018-05-27 11:40:01 [3752] 1 Exception caught in long __thiscall COpalisActionService2Module::PreMessageLoop(int) throw()
OpalisActionService2.cpp(122):
<Exception>
<Type>Opalis::Exception</Type>
<Location>
class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl `anonymous-namespace'::getConnectionString(void)
ActionServerRegistrar.cpp(31)
</Location>
<MsgCode>_com_error</MsgCode>
<Params>
<Param>此计算机无法与提供服务器的计算机进行通信。</Param>
<Param></Param>
<Param>-2147467235</Param>
</Params>
</Exception>

解决办法

  1. 根据微软Forum 下面帖子中的信息,提示KB中提示要安装SQL Server native Client .因此我安装了sql server native client ,下载安装2012 版的x64 ,然后发现重启 Orchestrator Runbook Service仍然报错。
  2. 参考上面帖子的另外一条信息:"After the Orchestrator updates are installed, reconfigure the Orchestrator database by using the existing database according to these guidelines.", 根据这篇文档重新配置数据库,输入数据库主机地址,选择使用现有数据库,然后选择覆盖现有数据。 然后启动Orchestrator Runbook Service 问题解决。

发现新问题

  1. 访问Orchesrtator web Console 提示HttpWebRequest_WebException_RemoteServer

解决新问题

  1. 发现这篇文档重新配置数据库时,web 用的配置和本地应用用的配置不一样,web用的IIS连接字符串。我在iis 中发现现有连接字符串配置都是设置成了本地的SQLEXPRESS了。
  2. 解密webservice 中的数据库连接字符串
PS C:\> C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pdf "connectionStrings" "C:\Program Files (x86)\Microsoft System Center 2012 R2\Orchestrator\Web Service\Orchestrator2012"
Microsoft (R) ASP.NET RegIIS version 4.0.30319.36415
Administration utility to install and uninstall ASP.NET on the local machine.
Copyright (C) Microsoft Corporation.  All rights reserved.
Decrypting configuration section...
Succeeded!
  1. 参考这篇文档修改webservice 的数据库连接字符串

4.改完把IIS的连接字符串加密回去。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "C:\Program Files (x86)\Microsoft System Center 2012 R2\Orchestrator\Web Service\Orchestrator2012"
  1. 按照类似上面步骤改web Console的网站的数据库连接字符串
############## 先解密字符串

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pdf "connectionStrings" "C:\Program Files (x86)\Microsoft System Center 2012 R2\Orchestrator\Orchestration Console"

############## 修改web Console 网站所用的数据库连接字符串

################ 加密web Console 网站所用的数据库连接字符串
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "C:\Program Files (x86)\Microsoft System Center 2012 R2\Orchestrator\Orchestration Console"
  1. 以上做了后,重启IIS和所有orchesrator 服务后,发现访问webconsole 仍然报错。在orchestrator 数据库上执行下面SQL命令后问题解决
GRANT EXECUTE ON object::[Microsoft.SystemCenter.Orchestrator].[GetSecurityToken] TO [Microsoft.SystemCenter.Orchestrator.Operators]

GRANT SELECT ON object::[Microsoft.SystemCenter.Orchestrator.Internal].[Settings] TO [Microsoft.SystemCenter.Orchestrator.Operators]

最后总结

  1. KB4047356 这个RU有点做的不够用心啊,KB提示也不全面,重点都放在角落里。