You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TFS 2017数据库中查询工作项标签的表/视图及方法咨询

查询TFS数据库中工作项标签的方法

首先,你提到的WorkItemsAre应该是旧版本TFS里的视图,在新版本(比如TFS 2018+或者Azure DevOps Server)中,标签相关的数据存储在几个核心表/视图里,我给你梳理一下具体的查询方法:

核心关联对象说明

  • WorkItemTags:存储所有工作项标签的基础信息,包含TagSK(标签唯一键)、TagName(标签名称)、ProjectSK(关联项目键)等字段。
  • WorkItemTagLinks:这是工作项与标签的关联表,通过WorkItemSK和TagSK建立多对多关系,用来把工作项和对应的标签绑定起来。
  • WorkItemsLatest:如果需要获取工作项的最新数据,这个视图(或者WorkItems表)是核心数据源,包含你提到的WorkItemSK、System_Id、ProjectSK、CollectionGUID等字段。

示例SQL查询语句

下面是一个直接可用的查询,能把工作项的基础信息和对应的标签关联起来:

SELECT 
    wi.System_Id AS WorkItemID,
    wi.System_Title AS Title,
    t.TagName AS WorkItemTag
FROM 
    WorkItemsLatest wi
LEFT JOIN 
    WorkItemTagLinks wtl ON wi.WorkItemSK = wtl.WorkItemSK
LEFT JOIN 
    WorkItemTags t ON wtl.TagSK = t.TagSK
WHERE 
    wi.ProjectSK = [你的项目SK] -- 替换成实际的ProjectSK值
    AND wi.CollectionGUID = '你的集合GUID' -- 替换成实际的CollectionGUID字符串
ORDER BY 
    wi.System_Id, t.TagName

如果需要把同一个工作项的多个标签合并成一行(用逗号分隔),可以用SQL Server 2017及以上支持的STRING_AGG函数:

SELECT 
    wi.System_Id AS WorkItemID,
    wi.System_Title AS Title,
    STRING_AGG(t.TagName, ', ') AS WorkItemTags
FROM 
    WorkItemsLatest wi
LEFT JOIN 
    WorkItemTagLinks wtl ON wi.WorkItemSK = wtl.WorkItemSK
LEFT JOIN 
    WorkItemTags t ON wtl.TagSK = t.TagSK
WHERE 
    wi.ProjectSK = [你的项目SK]
    AND wi.CollectionGUID = '你的集合GUID'
GROUP BY 
    wi.System_Id, wi.System_Title
ORDER BY 
    wi.System_Id

额外提醒

  • 虽然你清楚官方不建议直接查询TFS数据库,但还是要注意:不同TFS/Azure DevOps Server版本的表结构可能有细微差异,升级后要验证查询是否仍能正常运行。
  • 尽量避开业务高峰期执行这类查询,防止影响TFS服务的性能。
  • 如果你的TFS版本比较老旧(比如2015及以前),可能需要结合WorkItemsAre视图、tbl_Tag和tbl_WorkItemTagging表来关联,但这类旧表的结构稳定性较差。

内容的提问来源于stack exchange,提问作者Bill Greer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:40:45