升级克隆TFS 2012至2018 SP1后,如何清除所有工作区映射?
清理TFS 2018 SP1旧工作区映射的安全方案
嘿,这个场景我之前帮团队处理过——直接动手改TFS数据库真的是绝对要避免的操作,微软明确说过手动修改数据库会丧失官方支持,还很容易搞出数据不一致的问题。不过别慌,有官方提供的安全方法能批量清理所有旧工作区,完美实现你要的“让用户重新创建映射、防止覆盖代码”的目标:
方法1:用tf workspace命令行批量清理
这是最直接的方式,在新TFS服务器的应用层操作就行:
- 打开对应TFS 2018版本的Developer Command Prompt for Visual Studio
- 先登录到你的新TFS集合:
tf login https://your-new-tfs-server-url/tfs/YourCollectionName - 先枚举所有工作区,确认要清理的对象(可选,但建议做):
tf workspaces /collection:https://your-new-tfs-server-url/tfs/YourCollectionName /owner:* - 批量删除所有工作区(执行前一定要确认!这会删掉所有用户的旧工作区):
要是你把这段写成批处理文件,记得把for /f "tokens=1" %a in ('tf workspaces /collection:https://your-new-tfs-server-url/tfs/YourCollectionName /owner:* /format:table ^| findstr /v "Workspace"') do tf workspace /delete /collection:https://your-new-tfs-server-url/tfs/YourCollectionName %a%a改成%%a。
方法2:用TFS PowerShell模块操作
如果你更熟悉PowerShell,官方模块也能搞定:
- 导入TFS 2018的PowerShell模块:
Import-Module "$env:ProgramFiles\Microsoft Team Foundation Server 2018\Tools\Microsoft.TeamFoundation.PowerShell.dll" - 连接到目标集合:
$tfsCollection = Get-TfsTeamProjectCollection -CollectionUrl "https://your-new-tfs-server-url/tfs/YourCollectionName" - 一键删除所有工作区(同样,执行前确认清楚):
Get-TfsWorkspace -Collection $tfsCollection | Remove-TfsWorkspace -Confirm:$false
为什么不能直接改数据库?
TFS的工作区数据分散在tbl_Workspace、tbl_WorkspaceMapping等多个关联表里,手动删不仅容易漏删关联数据,还会破坏数据库的一致性校验,后续服务器出问题微软是不会帮你排查的。用官方工具才是稳妥的选择。
最后提醒
清理完旧工作区后,记得通知所有用户:
- 必须在新服务器上重新创建工作区并设置映射
- 绝对不要用旧的工作区配置连接新服务器,避免误操作覆盖代码
- 如果担心本地代码丢失,先把本地代码文件夹备份一份再操作
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

