在TFS 2013中,Microsoft“修复”了一个错误,该错误允许将工作项状态映射到看板中的“完成”状态。 此功能在我们公司中大量使用。有一份请愿书要把它带回去,但我认为它不会成功: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5589316-allow-multiple-complete-meta-state-mapping-in-tfs
为了将TFS2012迁移到TFS2013,我想知道TFS 2012中的自定义“完成”状态列存储在数据库中的哪个位置,以创建一个报告,该报告显示哪个团队使用哪个WorkItem状态作为其“完成”状态。
TFS2012 Kanban Board看起来像那样(注意下拉列表):
TFS2013看板看起来像那样(注意没有下拉列表):
我有权访问TFS Collection数据库,我想创建一个SQL查询,向我展示TFS 2012中此列的所有自定义。
到目前为止,我只能获得TeamId,Name,ColumnType ProjectId,但不能获得有效的WorkItem和“Done”列自定义。我怎么能这样做?
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
答案 0 :(得分: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"的结果位于XXXXXXXX
位置下方的查询列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
希望我上面提供的消息可以帮助您解决问题!
答案 1 :(得分: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]
当我在&#34;规则&#34;中检查XML时在那里,我可以找到我正在寻找的东西。