升级TFS2012查看SOURCE-history部分提示TF14045: The identity xxx is not a recognized identity

升级到TFS2012查看源代码的变更历史发现部分目录提示TF14045: The identity xxx is not a recognized identity,原始出错信息如下:

TF14045: The identity 6D92A6FC-E802-471B-A4C3-662D96B129E9 is not a recognized identity

MSDN有人碰到类似的问题,对方是从一个域迁移到另一个域:http://social.msdn.microsoft.com/Forums/en-US/tfsintegration/thread/ea056fd6-b24d-4edc-b43a-7c43af1fa25b,而我迁移时由于特定用户无法登陆,删除Windows User并在配置数据库中移除了对应的用户信息导致数据不匹配。

SQL Server Profiler查看执行语句如下:

declare @p2 dbo.typ_GuidTable
insert into @p2 values('6D92A6FC-E802-471B-A4C3-662D96B129E9')

exec prc_security_read_identities_by_tf_id @domain_sid='S-1-9-1551374245-4260716103-2838557511-2459265759-2417551670',@id_list=@p2

执行该语句没有任何返回,再次跟踪正常语句返回对应的用户信息。tf_id实际对应到TFS配置数据库的tbl_security_identity_cache表。查看prc_security_read_identities_by_tf_id,发现是一个加密存储过程,暂时无法分析它的执行逻辑。于是决定在tbl_security_identity_cache表中添加一条tf_id为6D92A6FC-E802-471B-A4C3-662D96B129E9的记录,继续执行prc_security_read_identities_by_tf_id仍无数据返回。用正确语句执行的tf_id跟踪正确用户信息发现也是一个active=0的用户,查看历史变更集时会显示变更用户,未出错的变更历史就是该用户未参与变更的项。使用正确tf_id查询关联的membership:

SELECT * FROM tbl_security_membership_cache WHERE member_id = '9CB6B868-0736-4561-8880-81FB2B26824E'

将这些membership复制给未识别的凭证,container_id等于正确用户关联的container_id、member_id等于未识别凭证、active=0。再次使用未识别凭证的prc_security_read_identities_by_tf_id,问题解决。

你可能感兴趣的:(history)