2014 相信自己能做的更好

---------------------------------------------------------------------------------------------------------
Everything is possible    Nothing is Impossible     
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 为了实现Microsoft Dynamics CRM 和EXCHANGE SERVER 的SaaS运营,微软部署一套HMC必装组件MPS(Microsoft Provisioning System,介绍见http://technet.microsoft.com/en-us/library/cc526764.aspx,安装见http://www.microsoft.com/downloads/details.aspx?FamilyId=F0B76D08-69B0-4A3D-AC97-10708B665EB8&displaylang=en),该组件实现HUSTING AD中OU和OU之间的隔离,每个OU就是一个Tenant(租户)。这个组件需要除了域控外,必须还得安装三个角色:MPSSQL(SQL Server2005必须装英文企业版)、MPSENG和MPSWEB,MPSWEB是向外界暴露操作HOSTING AD 的接口(http://mpsweb.contoso.corp/mpsws/HostedActiveDirectory/Service.asmx),MPSENG和MPSWEB通过Socket通讯,而MPSENG上有一个服务Provisioning Queue Manager Service。
 最近发现MPSENG上经常出现如下错误:
Failed while picking up the queued jobs from server MPSSQL;MPFTranLogData with error code 80004005. If these error are seen very frequently please escalte it.

This error maybe be either due to connectivity issue with transaction log database or due to some deadlock and background pickup thread was choosen as a deadlock victim.

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

 找了很多文章包括老外的,也没办法解决。
 如是初步怀疑在MPFTranLogData上有死锁问题出现,通过执行sp_who_lock,又没有发现死锁,如是找到Provisioning Queue Manager Service的启动账号 contoso.corp\MPFServiceAcct,这个用户在DC上是在MPFServiceAccts群组里面,而在MPSSQL中MPFServiceAccts对MPFTranLogData的权Role权限只有public 和 MPFServiceRole,于是提升它赋予db_owner权限,然后将MPSSQL重启,再将MPSENG重启,最后重启MPSWEB,这个启动顺序一定是这样,否则问题依然,最后到MPSENG上发现,这个错误不出现,问题解决。