使用脚本SQL直接从TFS数据库获取工作项的历史记录

时间:2017-03-13 22:11:50

标签: sql database tfs workitem

由于我不会告诉你不要烦恼的原因..我需要直接访问数据库以提取笔记功能。所以我创建这个脚本来识别我感兴趣的项目

SELECT *
  FROM [Tfs_GedCollection].[dbo].[tbl_WorkItemCoreLatest] a
INNER JOIN [Tfs_GedCollection].[dbo].[tbl_WorkItemCustomLatest] b ON a.PartitionId=b.PartitionId AND a.DataspaceId=b.DataspaceId AND a.Id = b.Id
  where a.[WorkItemType] = 'Feature'
    AND b.FieldId IN (
  -- CAMPO CODICEMMA
SELECT [FieldId] FROM [Tfs_GedCollection].[dbo].[tbl_Field]
 where [Tfs_GedCollection].[dbo].[tbl_Field].[Name] = 'CODICEMMA'-- Filed for identify projects in my company
  )

但我错过了最后一步:获取历史记录(通过控件使用type = WorkItemLogControl插入的讨论(使用fieldname = System.History映射)。

提前致谢

2 个答案:

答案 0 :(得分:3)

不建议查询原始数据库,也不建议修改TFS中的数据库数据。

但是,您可以使用 FactWorkItemHistory 查询有关功能,任务和其他类型工作项的历史数据,并在 TFS数据仓库中显示关联的维度表。更多详情请参阅Work Item History tables

另一种方法是使用TFS API来实现这一目标。如何实现它请看看:TFS SDK: Work Item History Visualizer using TFS API

答案 1 :(得分:0)

我在视图中找到了我需要的信息:[vw_WorkItemComments](在名为[Text]的列中)。

所以查询将是:



-- Identificazione dei progetti
SELECT b.stringvalue, c.[System.CreatedBy_IdentityDisplayPart], c.[System.ChangedDate], c.[Text]--, *
  FROM [Tfs_GedCollection].[dbo].[tbl_WorkItemCoreLatest] a
        INNER JOIN [Tfs_GedCollection].[dbo].[tbl_WorkItemCustomLatest] b ON a.PartitionId=b.PartitionId AND a.DataspaceId=b.DataspaceId AND a.Id = b.Id
        INNER JOIN [Tfs_GedCollection].[dbo].[vw_WorkItemComments] c ON a.Id = c.[System.Id]
  where a.[WorkItemType] = 'Feature'
    AND b.FieldId IN (
        -- CAMPO CODICEMMA
        SELECT [FieldId] FROM [Tfs_GedCollection].[dbo].[tbl_Field]
          where [Tfs_GedCollection].[dbo].[tbl_Field].[Name] = 'CODICEMMA'-- Filed for identify projects in my company
  )