4

在 TFS 2013 中,微软“修复”了一个错误,该错误允许将 WorkItem 的状态映射到看板中的“完成”状态。这个功能在我们公司被大量使用。有请愿书把它带回来,但我认为它不会成功:http: //visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5589316-allow-multiple-complete-meta- tfs 中的状态映射

为了将 TFS2012 迁移到 TFS2013,我想知道 TFS 2012 中自定义的“完成”状态列在数据库中的存储位置,以创建一个报告,该报告显示哪个团队使用哪个 WorkItem 状态作为他们的“完成”状态。

TFS2012 看板看起来像这样(注意下拉菜单): TFS2012看板

TFS2013看板看起来像这样(注意没有下拉): 在此处输入图像描述

我确实可以访问 TFS 集合数据库,并且我想创建一个 SQL 查询,它显示了 TFS 2012 中此列的所有自定义。

  • 如何在 TFS2012 数据库中为每个团队项目和每个团队获取“我的工作项”的自定义“完成”状态?
  • 为了获得这些状态,我需要链接到哪些其他表?

到目前为止,我只能获得 TeamId、Name、ColumnType ProjectId,但无法获得有效的 WorkItem 和“完成”列自定义。我怎样才能做到这一点?

SELECT
    tbl_Board.TeamId, 
    tbl_Board.Revision, 
    tbl_BoardColumn.Name, 
    tbl_BoardColumn.ColumnType, 
    tbl_WorkItemTypeExtensions.Description, 
    tbl_BoardColumn.[Order], 
    tbl_WorkItemTypeExtensions.ProjectId
FROM
    tbl_WorkItemTypeExtensions
    RIGHT OUTER JOIN tbl_Board ON 
    tbl_WorkItemTypeExtensions.Id = tbl_Board.ExtensionId
    LEFT OUTER JOIN tbl_BoardColumn ON 
    tbl_Board.Id = tbl_BoardColumn.BoardId
4

2 回答 2

2

专家不建议访问 TFS 数据库,但Tfs_Warehouse如果配置了报告并且所有项目集合中的数据被收集并存储在针对报告进行了优化的表中,您可以使用数据库。我对 TFS 的数据库结构一无所知,但通过浏览几篇重要的在线文章,我对它了解了一些,并且我了解您所需的信息在WorkItemsAre表中。

通过下面的查询,您可以获得看板上某个工作项的状态:


USE Tfs_DefaultCollection
SELECT TOP(10)
MarkerField + 1 as FieldId,
* 
FROM tbl_WorkItemTypeExtensions with(nolock) 
JOIN tbl_projects on tbl_WorkItemTypeExtensions.ProjectId = tbl_projects.project_id
WHERE tbl_projects.project_name LIKE '%ProjectName%

将“FieldId”列中的结果复制到下面位置 XXXXXXXXX 的查询中


SELECT TOP 1000 
wid.Id, 
wia.State, 
wid.StringValue as Kanban, 
wia.[Work Item Type], 
wia.Title, 
tn.Name as Iteration
FROM tbl_WorkItemData wid with(nolock)
JOIN WorkItemsAre wia on wia.ID = wid.Id
JOIN TreeNodes tn on wia.IterationID = tn.ID
WHERE FieldId = XXXXXXXX and RevisedDate = '9999-01-01 00:00:00.000'
ORDER BY Id

希望我上面提供的资源可以帮助您解决问题!

于 2015-04-17T20:40:32.797 回答
2

我联系了 Microsoft 支持,他们为我的问题提供了以下答案:

SELECT
       board.TeamId,
       boardColumn.Name,
       workItemTypeExtensions.Rules
FROM           
       tbl_Board board JOIN
       tbl_WorkItemTypeExtensions workItemTypeExtensions ON board.ExtensionId = workItemTypeExtensions.Id JOIN
       tbl_projects projects ON workItemTypeExtensions.ProjectId = projects.project_id  JOIN
       tbl_BoardColumn boardColumn ON board.Id = boardColumn.BoardId
WHERE       
       projects.project_name LIKE '%< ENTER YOUR PROJECT NAME HERE >%' AND
       boardColumn.ColumnType = 2
ORDER BY
       board.TeamId,
       boardColumn.[Order]

当我在“规则”列中检查 XML 时,我可以准确地找到我正在寻找的内容。

于 2015-05-28T05:56:58.950 回答