将我们的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
中有一个条目SamAccountName
和ObjectSID
都有该条目。它看起来像旧域中的帐户。 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`
所以看起来我可能有一个不再存在的项目管理员。有关如何手动删除该成员资格的任何想法?
答案 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