【问题标题】:Query for Work Items that contain attachments of a specific type查询包含特定类型附件的工作项
【发布时间】:2010-07-08 05:05:24
【问题描述】:

在我们的版本中,有时需要在我们的生产数据库上运行脚本。如果脚本需要在数据库上运行,标准是附加一个 .sql 文件到工作项。

有什么方法可以查询包含 .sql 文件附件的工作项?我不希望每次需要推送发布时都打开每个工作项来检查这些附件。

【问题讨论】:

  • “查询”是指 WIQL 查询,还是针对数据库的 SQL 查询?
  • 我更喜欢前者,但后者就足够了。我只是在研究如何才能做到后者。

标签: tfs


【解决方案1】:

这就是我直接查询TfsWorkItemTracking 数据库的方法。我会假设Fld10005 在其他 TFS 实例上可能相同也可能不同。可以在dbo.Fields 表中找到这些字段。


with [project-nodes] (
    ID,
    [Name],
    [Path],
    [Depth]) 
as (
    select 
        t.ID, 
        t.Name,
        cast(t.Name as varchar(max)) as [Path], 
        0 as [Depth]
    from dbo.TreeNodes t
    where t.ID = 220
    union all
    select 
        c.ID, 
        c.Name, 
        cast(p.[Path] + '/' + c.Name as varchar(max)),
        [Depth] + 1
    from dbo.TreeNodes c
    inner join [project-nodes] p
        on c.ParentID = p.ID)
select 
    t.[Path] as [Area Path], 
    l.Title, 
    l.Fld10005 as [Resolved Date], 
    f.OriginalName
from dbo.WorkItemsLatest l
inner join [project-nodes] t
    on l.AreaID = t.ID
inner join dbo.WorkItemFiles f
    on l.ID = f.ID
where f.OriginalName like '%.sql'
and l.Fld10005 > '2010-05-21' -- ResolvedDate
order by
    t.Name

【讨论】:

  • @HappyBird -- SSMS 查询分析器。请注意,此 tfs 2008 的本地实例。
【解决方案2】:

您可以通过 WIQL 执行此操作但仍保持一定性能水平的另一种方法是创建用于这些任务的自定义工作项类型。然后,如果您将 WIQL 查询设置为

(半伪代码)

SELECT Id from WorkItems where 
WorkItemType = 'MySpecialWorkItem' AND
Status = 'Active';

然后您可以遍历并检查附加的 SQL 文件。使用 WorkItemType 和 Status 标准应该会显着限制返回记录的数量,然后遍历附件不会对流程的性能产生太大影响。

【讨论】:

  • 这不是一个坏建议,我必须由团队来运行它
猜你喜欢
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 2017-06-15
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多