-1

(免责声明:T-SQL 和 SSRS 专家,接触 WIQL 约两小时)

我有一些用户使用他们喜欢的 UI 设计器创建了 Team Foundation Services (TFS) 工作项查询,并使用硬编码的每月参数,并要求我探索将其转换为他们可以的 SSRS 报告传递他们想要的所有参数。

为此,我猜我需要将查询转换为 T-SQL。

将报告导出到 .wiq 文件中,然后在 .wiq 文件中读取 xml 中的查询,我能够提取以下 WIQL(为了保密,稍作编辑)。问题是,查看我的 TFS 服务器,其中包含数据库 TFS_Coniguration、Tfs_CX、Tfs_DefaultCollection、TFS_IT 和 TFS_Warehouse,我在任何地方都看不到名为 WorkItems 的表或视图,因此我无法将以下 WIQL 转换为 T -SQL。

如果 TFS 中存储了某种表别名可以为我提供线索,我看不到它。

所以,问题:如何将以下 WIQL 转换为 T-SQL?

SELECT 
    [System.Id], [System.AreaPath], [System.Title], [System.Tags], [System.AssignedTo], 
    [System.State], [foo.VSTS.Agile.Release], [System.CreatedDate], [Microsoft.VSTS.Scheduling.StoryPoints] 
FROM 
    WorkItems 
WHERE 
    [System.TeamProject] = @project AND
    [System.WorkItemType] IN ('User Story') AND
    [System.State] = 'Active' AND
    [foo.VSTS.Agile.Release] <= '2018-06-10T00:00:00.0000000' AND
    [foo.VSTS.Agile.Release] >= '2018-06-30T00:00:00.0000000' AND
    [System.AreaPath] UNDER 'AppDev' 
ORDER BY
    [foo.VSTS.Agile.Release]
4

2 回答 2

1

Daniel 是对的,不建议使用 SQL 直接查询 TFS 操作存储(Tfs_DefaultCollection),这可能会失去 MS TFS 支持团队的支持。

一种方法是使用数据库视图 vw_denorm_WorkItemCoreLatest。在这种情况下,“最新”意味着,您只能获得工作项的最新版本,而没有任何以前的版本。如果您需要工作项的所有版本,请使用视图 vw_WorkItemCoreAll

WIQL 中的示例如下所示:

SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State]
FROM WorkItems 
WHERE [System.TeamProject] = @project
  and [System.WorkItemType] = 'Ticket'
  and [System.State] <> 'Closed'
  and [System.State] <> 'Removed'

除了选定的列之外,还有一个 SQL 示例供您参考:

SELECT *
FROM [dbo].[vw_denorm_WorkItemCoreLatest]
WHERE [System.TeamProject] = 'MyTeamProject'
  and [System.WorkItemType] = 'Ticket'
  and [System.State] <> 'Closed'
  and [System.State] <> 'Removed'

对于仓库,请查看如何在关系仓库上使用 SQL 查询工作项

于 2018-06-22T10:16:21.230 回答
0

我采取了不同的方法。我使用 SSIS 包将数据调用到 Excel 文件并从中构建支持增量加载的数据集市。然后我使用 SSRS 轻松使用我的 SQl 表中的数据来构建我的报告

图片

于 2022-01-19T10:37:00.193 回答