TFS2010升级至TFS2012延用Windows用户组,发现部分用户无法登陆。控制面板中删除用户再次添加相同名称的用户,将该用户添加到任意组时提示存在相同帐号名称的多个定义。TFS配置数据库的tbl_security_identity_cache存放用户身份凭证,当你删除某个用户后一段时间内可以搜索到该用户就是由于这张表的缓存。tbl_security_identity_cache和tbl_security_membership_cache存在约束,必须先删除tbl_security_membership_cache中的记录。tbl_security_membership_cache存放组成员关联,member_id字段可以对应tbl_security_identity_cache的tf_id,也可以对应tbl_gss_groups的tf_id。tbl_gss_groups的pid对应tbl_security_projects的pid,tbl_security_projects存放Collection和它下面的Project。
1、获取想要删除重复用户的多条记录,并记录对应的tf_id(Guid)。在TFS2012中允许用户修改帐号的显示名称,display_name字段会产生变化,可以改为使用account_name。
SELECT * FROM [dbo].[tbl_security_identity_cache] WHERE display_name = [userUid]
2、删除用户关联的Membership信息。
DELETE tbl_security_membership_cache WHERE member_id = [tf_id]
3、删除用户凭证信息。
DELETE FROM [dbo].[tbl_security_identity_cache] WHERE tf_id = [tf_id]
4、查看组信息,tbl_security_membership_cache的container_id对应tbl_gss_groups的tf_id。
SELECT * FROM [dbo].[tbl_gss_groups] WHERE tf_id = [container_id]
5、查看项目信息,tbl_gss_groups的pid对应tbl_security_projects的pid。
SELECT * FROM tbl_security_projects WHERE pid = [pid]