TFS 说我不是 Team Foundation 有效用户组的成员,但我是

TFS says I am not a member of the Team Foundation Valid Users group, but I am

我正在尝试使用 VS2013 签入对 TFS 的更改。当我点击提交按钮时,TFS returns 出现以下错误,"TF14002: The identity {domain} \ {oldaccount} is not a member of the Team Foundation Valid Users group."

背景:我的帐户名已从 {oldaccount} 更改为 {newaccount}。

当我第一次开始在这家公司工作时,我几乎可以肯定我是用我的旧帐户设置我的 TFS。但我想我删除了所有与旧帐户相关的内容并将所有内容重置为我的新帐户。我的首席技术人员甚至向我展示了带有新帐户名称的帐户管理屏幕。而且我已经能够使用我的新帐户名签出项目。

我执行了以下步骤来尝试 "clean out" TFS:
• 我已将所有更改的文件复制到备份位置。
• 我撤消了 TFS 中的所有更改(请注意,TFS 一直允许我签出要编辑的文件)。
• 我根据在线建议删除了凭据管理器中的 TFS 条目。
• 我删除了我的工作区。
• 我什至删除了我的 TFS 服务器。
• 我重新启动了计算机。
• 我重新连接到 TFS 服务器。
• 我重建了我的工作区。
• 我从备份位置恢复了更改的文件。

此时我尝试再次签入我的更改,但收到与上述相同的错误消息。

有什么建议吗?

请注意,我无权访问 TFS 服务器,更没有权限对其执行任何类型的管理(而且我不知道谁会这样做)。因此,除了简单地调整我的计算机之外,任何建议都需要穿越官僚沼泽。

一个可能的积极因素(与此问题相关)是我们被告知我们中的许多人需要从 "Ultimate" 降级到 "Professional",因此如果您的建议是重新安装 Visual Studio,好处是我很快就会这样做。

谢谢,
道格

编辑:
附加信息:我删除了此文件夹中的所有内容:

C:\Users\ ...\AppData\Local\Microsoft\Team Foundation.0\Cache

...但我仍然看到错误。

2015 年 1 月 24 日更新:
我终于 "downgrade" 从 Visual Studio 2013 Ultimate 升级到 VS2013 Professional,但我仍然遇到同样的错误。 TFS 数据库中可能有一个 table 仍然有我的旧帐户的条目,当我签入我的 TFS 去查找我的帐户信息时,该条目可能会加入我的计算机名和/或新帐户名变化?我非常渴望得到答案!

附录:当系统管理员更改我的帐户名时,他们没有更新我的计算机本身,所以我仍在使用 C:\Users\{oldaccount}。我不敢相信这会有所作为,但你永远不知道....

2016 年 2 月 27 日更新:
抱歉没有早点更新。我在我们的 DBA 的帮助下解决了这个问题:

有一个名为 Constants 的 table,它包含域部分和一个名为“NamePart”的字段。解决方案是简单地将“NamePart”从“{oldaccount}”更新为“{newaccount}”。 table 还有一个 SID 字段,它是计算机注册表中的用户 SID。如果创建了新的计算机登录名,您只需更改 SID。在我的例子中,没有新的登录帐户,只是更改了我的登录帐户 -name-,因此,没有新的 SID。

还有一个旁注,对于电子邮件拼写错误的情况,还有 ADObjects table 包含一个名为“MailNickName”的字段。当用户名拼写错误时,也应更新此字段。例如,我让 DBA 更新该字段以将“Dug@NotReal.net”更改为“Doug@NotReal.net”。

更新 常量 table 是使 TFS 正常工作的必要条件;更新 ADObjects 仅在不包含用于将邮件从一个电子邮件地址转发到另一个电子邮件地址的别名时才有意义。

我在 C:\Users\{username}\AppData\Local\Microsoft\Team Foundation.0\Cache\Volatile\ 包含我的旧域用户名的文件夹。将其更改为我的新域,它又开始工作了。

我遇到了 shell 集成的问题,Visual Studio 实际上工作正常。

我应该将我的答案(2016 年 2 月 27 日更新)发布为官方答案。我在我们的 DBA 的帮助下解决了这个问题:

有一个名为 Constants 的 table,它包含域部分和一个名为“NamePart”的字段。解决方案是简单地将“NamePart”从“{oldaccount}”更新为“{newaccount}”。 table 还有一个 SID 字段,它是计算机注册表中的用户 SID。如果创建了新的计算机登录名,您只需更改 SID。在我的例子中,没有新的登录帐户,只是更改了我的登录帐户 -name-,因此,没有新的 SID。

附带说明,对于电子邮件拼写错误的情况,还有 ADObjects table 包含一个名为“邮箱昵称”。当用户名拼写错误时,也应更新此字段。例如,我让 DBA 更新该字段以将“Dug@NotReal.net”更改为“Doug@NotReal.net”。

更新 常量 table 是使 TFS 正常工作的必要条件;更新 ADObjects 仅在不包含将邮件从一个电子邮件地址转发到另一个电子邮件地址的别名时才有意义。

上述解决方案不适用于我们公司的开发人员。我的一位同事提出了一个简单的想法,即执行“撤消结帐”,这很奏效。之后 check-in en checkout 再次运行良好。