TFS 2012更新失败:身份同步错误...帐户名和安全ID之间没有映射

时间:2013-04-12 13:52:19

标签: tfs tfs2010 tfs2012

将我们的TFS 2010升级到TFS 2012,我在其中一个集合中收到此错误:

[Error] Sync error for identity: System.Security.Principal.WindowsIdentity, S-1-5-21-xxxxxxx - No mapping between account names and security IDs was done

升级失败。从管理控制台重新运行服务作业会导致相同的错误。

我查看了数据库,ADObjects中有一个条目SamAccountNameObjectSID都有该条目。它看起来像旧域中的帐户。 fDeleted为1。

如何清理它以便升级?

添加了信息(来自SQL跟踪):

declare @p3 dbo.typ_ServicingStepDetail2 insert into @p3 values(1,'ToDev11Beta1FinalConfiguration','BuildToDev11Beta1FinalConfiguration','Grant Administer Build Permissions to Project Administrators','2013-04-12 14:17:55.617',NULL,0,N'Microsoft.TeamFoundation.Framework.Server.IdentitySyncException: Sync error for identity: System.Security.Principal.WindowsIdentity, S-1-5-21-xxxxx - No mapping between account names and security IDs was done at Microsoft.TeamFoundation.Framework.Server.TeamFoundationIdentityService.TryReadIdentityFromSourceInternal(TeamFoundationRequestContext requestContext, IdentityDescriptor descriptor, Boolean withDirectMembership, TeamFoundationIdentity& identity) at Microsoft.TeamFoundation.Framework.Server.TeamFoundationIdentityService.AddMemberToApplicationGroup(TeamFoundationRequestContext requestContext, IdentityDescriptor groupDescriptor, IdentityDescriptor memberDescriptor, Boolean errorOnDuplicate, Boolean logSync, Boolean ensureKnown) at Microsoft.TeamFoundation.Framework.Server.TeamFoundationIdentityService.EnsureIsMember(TeamFoundationRequestContext requestContext, IdentityDescriptor groupDescriptor, IdentityDescriptor descriptor) at Microsoft.TeamFoundation.Framework.Server.TeamFoundationSecurityNamespace.EnsureIdentityIsKnownInternal(TeamFoundationRequestContext requestContext, IdentityDescriptor identity, Boolean throwOnFailure) at Microsoft.TeamFoundation.Framework.Server.TeamFoundationSecurityNamespace.SetAccessControlEntries(TeamFoundationRequestContext requestContext, String token, IEnumerable 1 accessControlEntries,布尔合并,布尔值throwOnInvalidIdentity)    在Microsoft.TeamFoundation.Framework.Server.TeamFoundationSecurityNamespace.SetAccessControlEntries(TeamFoundationRequestContext requestContext,String token,IEnumerable`1 accessControlEntries,Boolean merge)    在Microsoft.TeamFoundation.Server.Servicing.TFCollection.BuildStepPerformer.GrantAdministerPermissionsToProjectAdmins(TeamFoundationRequestContext requestContext,ServicingContext servicingContext)    在Microsoft.TeamFoundation.Framework.Server.TeamFoundationStepPerformerBase.Microsoft.TeamFoundation.Framework.Server.IStepPerformer.PerformStep(String servicingOperation,String stepType,String stepData,ServicingContext servicingContext)    在Microsoft.TeamFoundation.Framework.Server.ServicingStepDriver.PerformServicingStep(ServicingStep步骤,ServicingContext servicesContext,ServicingStepGroup组,ServicingOperation servicingOperation,Int32 stepNumber,Int32 totalSteps)') 插入@ p3值(2,'ToDev11Beta1FinalConfiguration','BuildToDev11Beta1FinalConfiguration','授予管理员对项目管理员的构建权限','2013-04-12 14:17:55.617',5,NULL,NULL)

exec prc_AddServicingStepDetails @ jobId ='xxx',@ queueTime ='2013-04-12 14:17:50.840',@ stepDetails = @ p3,@ hostId ='xxx',@ completedStepCount = 419`

所以看起来我可能有一个不再存在的项目管理员。有关如何手动删除该成员资格的任何想法?

2 个答案:

答案 0 :(得分:0)

好的,我通过执行以下操作完成了升级。

这极其肮脏和危险。不要尝试没有良好的备份。您的保修已经过期。这非常可能不适合你。它可能会破坏你的整个TFS设置并给你的小孩带来疾病。

反正。

打开SQL Server Management Studio。为不会升级的项目集合(通常是Tfs_NameOfCollectionThatWontUpgrade)打开一个新的查询窗口。执行以下命令:

Select TeamFoundationId From ADObjects
Where ObjectSID='S-1-xxxx'

(显然,请从错误消息中插入正确的SID。)

这将为您提供导致问题的身份的内部GUID。我升级失败的步骤是给予项目管理员Build Administrator权限,而whoop-dee-doo,我可以自己做。

现在从轨道上修改Active Directory链接(您确实复制了GUID,对吧?)

Delete From ADObjects
Where ObjectSID='S-1-xxxxx'

(显然,从你的错误信息中插入正确的SID。另请注意,这一步可能不是绝对必要的,但是我执行了这一步,如果我回头看看你是否可以做,我会被诅咒没有它。)

啊,得爱链锯手术。更多事情要做。让我们从所有群组中删除此身份。 注意:如果您对自己唯一的管理员帐户执行此操作,则可能会将自己关闭在集合和/或项目中。你已被警告。

切换到配置数据库(通常为Tfs_Configuration)并执行

Delete From tbl_GroupMembership 
Where MemberId='The GUID you remembered'

此时,用户不再是任何成员,升级应该完成。一切都应该存在:构建,工作项目和来源。

答案 1 :(得分:0)

当我的TFS服务器使用TFS 2012 Update 1时,我遇到了一个非常类似的问题(几乎完全相同)。我也提出了这个问题来解决它。当我有运行TFS 2012 RTM或TFS 2012 Update 2的TFS服务器时,我没有遇到此问题。

这是指向该主题的链接。 http://social.msdn.microsoft.com/Forums/en-US/tfsadmin/thread/238cad96-8e74-4f14-869a-3bb5e0629fd7