Error: Could Not Find GUID for Server

症状:

一客户声称从UR3升级安装了UR8以后系统无法登录,把CRM的日志跟踪开关打开后发现如下错误:

Exception type: CrmSecurityException Exception message: Could not find GUID for server: <MachineName> $

Stack trace:

at Microsoft.Crm.BusinessEntities.SecurityUtils.GetGuidFromServerName(String serverName)

at Microsoft.Crm.BusinessEntities.SecurityUtils.GetLocalSystemGuid()

at Microsoft.Crm.Caching.OrganizationSettingsCacheLoader.LoadCacheData(Guid key, ExecutionContext context)

at Microsoft.Crm.Caching.ObjectModelCacheLoader`2.LoadCacheData(TKey key, IOrganizationContext context)

其系统CRMAppPool配置为network service帐号。

 

解决办法:

1. 删除重复的帐号。

    为了验证帐号是否重复,步骤如下:

   Administration Tools –>> Active Directory Users and Computers –>> Find, 输入CrmAppPool配置的帐号 (如果是Network Service那么就应该输入机器名字),看看查询结果是否有多个。

2. 更换CrmAppPool的运行帐户,保证新帐户域内唯一。

  注意新帐户要属于如下安全组: PrivUserGroup,SQLAccessGroup, CRM_WPG和IIS_WPG(本地安全组)。

原因:

CRM UR4为了修复如下的性能bug引入了新的搜索算法(内部跟踪号7004).该算法会分GC遍历AD Forest寻找CrmAppPool的帐号。如果没有找到或找到多个重复帐号,那么CRM会被迷惑不知道应该使用哪个帐号,从而失败掉。

https://support.microsoft.com/?kbid=968176

“When you save a security role that is used in multiple Active Directory domain controllers on different subnets, Microsoft Dynamics CRM 4.0 becomes unresponsive for two to three minutes. However, after two to three minutes, the security role is saved.”

 

thanks

张立岩 (Clifford Zhang )