从 <guid> 2010 升级后,TFS 2012 更新 4 中的"TF14045:标识不是可识别的标识"



我们最近从 TFS 2005 迁移到 TFS 2010 再到 TFS 2012(更新 4(

TFS 2005 到 TFS 2010 是通过升级过程完成的。 TFS 2010 到 TFS 2012 是通过分离(从TFS2010框中(和重新附加方法(在 TFS 2012 框中(完成的

我们的一位用户收到以下错误。

"TF14045:身份不是公认的身份"

问题似乎与他的机器名称和工作区有关。

当我尝试使用团队基金会 Sidekicks 2012 按计算机名称搜索 TFS 工作区时,我收到相同的错误。

如果此人在不同的PC上工作,则没有任何问题。

这是我尝试过的一些东西

  • 我尝试删除他的个人资料,但没有奏效。
  • 尝试安装vs2013以查看它是否是Visual Studio 2010问题,但这不起作用
  • 重新安装了电脑,但名称相同,我仍然收到错误。
  • 尝试更改PC名称,将其从域中删除,重新连接到域,但这不起作用

我没有尝试再次重建机器,而是用不同的名称看看会发生什么。我只是想在我重做那个漫长的任务之前看看是否有人有任何建议。

最后,我用一个全新的名称重建了电脑。 之后,用户登录时再也没有问题了。

当我在团队基金会伙伴中按计算机名称搜索 TFS 时,我仍然收到错误,但我认为答案是一个失败的原因。

**

更新 - 2 年后,我决定清理 TFS 中的旧工作区。我注意到在尝试查看特定集合上的所有工作区时仍然有报告的问题。

(TF 工作区/所有者:*/计算机:*/集合:....(

我打开了一张Microsoft的事件票。

经过一些故障排除后,答案是从收集表中清除坏处 - tbl_VCIdentityMap

清除第一个条目后,我将重试 tf workspaces 命令,并弹出一个新的 guid 错误。

我最终从该表中清除了 25 个条目,然后 tf 工作区的问题消失了。

错误消息中弹出的 guid 等于位于许多集合表中的 TeamFoundationServerId。

下面是一个 PowerShell 包装器,我用它来删除给定用户的所有工作区:

Set-Alias -Name 'tf' -Value 'C:Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam ExplorerTF.exe' # amend path so it points to your tf.exe file
# fetch a list of all workspaces and store them in an xml variable
$x = [xml](tf workspaces /computer:* /owner:* /format:xml)
# determine who we want to delete (this is used in our filter later; to delete all, just skip the filter
$userToDelete = 'Someone@example.com'
# for each workspace 
# take those where the owner's display name matches our target user
# then delete that workspace (I've left prompts enabled, so you can manually validate things; add /noprompt to avoid that
$x.Workspaces.Workspace | ?{$_.ownerdisp -eq $userToDelete} | %{tf vc workspace /delete "$($_.name);$($_.owner)"}

有关MS文档中可用选项的更多信息;因此您可以根据确切要求调整上述内容。

感谢这篇文章向我展示了 XML 输出技巧。

在我们的方案中,我们正处于 TFS 到 Azure DevOps Server 迁移的过程中。

连接到新的 Azure DevOps 实例后,将 Visual Studio 2019 连接回 TFS 存储库时收到相同的错误。

通过源代码管理资源管理器手动删除工作区可以解决问题。

我已经做得很好:我重命名/删除了从 TFS_Database.dbo.tbl_Workspace 连接错误的工作区

最新更新