(免责声明: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]
答案 0 :(得分: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'
对于仓库,请查看How to query Work Items using SQL on the Relational Warehouse