TFS 2013 看板 Done 列(多个完整状态)
TFS 2013 Kanban board Done column (multiple complete states)
在 TFS 2013 Microsoft "fixed" 中,允许将 WorkItem 的状态映射到看板中的 "Done" 状态的错误。
这个功能在我们公司被大量使用。有一份请愿书将它带回来,但我认为它不会成功:
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5589316-allow-multiple-complete-meta-state-mapping-in-tfs
为了将 TFS2012 迁移到 TFS2013,我想知道 TFS 2012 中自定义的 "Done" 状态列在数据库中的存储位置,以创建一个报告,显示哪个团队使用哪个 WorkItem 状态作为他们的 "Done"状态。
TFS2012 看板看起来像这样(注意下拉列表):
TFS2013 看板看起来像这样(注意没有下拉列表):
我确实可以访问 TFS 集合数据库,我想创建一个 SQL 查询来显示 TFS 2012 中此列的所有自定义设置。
- 如何在 TFS2012 数据库中获取 "My WorkItem" 每个团队项目和每个团队的自定义 "Done" 状态?
- 为了获得这些状态,我还需要 link 哪些其他表格?
到目前为止,我只能获取 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
专家不建议访问 TFS 数据库,但您可以使用 Tfs_Warehouse
数据库,如果报告已配置并且 来自所有项目集合的数据被收集并存储在 tables 中针对报告进行了优化。
我不了解 TFS 的数据库结构,但浏览了几篇重要的在线文章后,我对它有了一些了解,据我所知,您需要的信息在 WorkItemsAre
table 中.
- Team Foundation Server Databases
- Work item field and database schema reference
- Stack overflow Question Access the Kanban Column (a Team-Specific Field) for a Work Item
通过下面的这些查询,您可以获得看板上某个工作项的状态:
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
希望我上面提供的资源对您的问题有所帮助!
我联系了 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]
当我在 "Rules" 列中检查 XML 时,我可以准确地找到我要找的东西。
在 TFS 2013 Microsoft "fixed" 中,允许将 WorkItem 的状态映射到看板中的 "Done" 状态的错误。 这个功能在我们公司被大量使用。有一份请愿书将它带回来,但我认为它不会成功: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5589316-allow-multiple-complete-meta-state-mapping-in-tfs
为了将 TFS2012 迁移到 TFS2013,我想知道 TFS 2012 中自定义的 "Done" 状态列在数据库中的存储位置,以创建一个报告,显示哪个团队使用哪个 WorkItem 状态作为他们的 "Done"状态。
TFS2012 看板看起来像这样(注意下拉列表):
TFS2013 看板看起来像这样(注意没有下拉列表):
我确实可以访问 TFS 集合数据库,我想创建一个 SQL 查询来显示 TFS 2012 中此列的所有自定义设置。
- 如何在 TFS2012 数据库中获取 "My WorkItem" 每个团队项目和每个团队的自定义 "Done" 状态?
- 为了获得这些状态,我还需要 link 哪些其他表格?
到目前为止,我只能获取 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
专家不建议访问 TFS 数据库,但您可以使用 Tfs_Warehouse
数据库,如果报告已配置并且 来自所有项目集合的数据被收集并存储在 tables 中针对报告进行了优化。
我不了解 TFS 的数据库结构,但浏览了几篇重要的在线文章后,我对它有了一些了解,据我所知,您需要的信息在 WorkItemsAre
table 中.
- Team Foundation Server Databases
- Work item field and database schema reference
- Stack overflow Question Access the Kanban Column (a Team-Specific Field) for a Work Item
通过下面的这些查询,您可以获得看板上某个工作项的状态:
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
希望我上面提供的资源对您的问题有所帮助!
我联系了 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]
当我在 "Rules" 列中检查 XML 时,我可以准确地找到我要找的东西。