在我们的版本中,有时需要在我们的生产数据库上运行脚本。如果需要在db上运行脚本,则标准是将.sql文件附加到工作项。
有什么方法可以查询包含附件是.sql文件的工作项吗?每次我需要推送一个版本时,我不想打开每个工作项来检查这些附件。
答案 0 :(得分:2)
这是我通过直接查询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
答案 1 :(得分:1)
通过WIQL实现此目的的另一种方法是,但仍保持某种程度的性能是创建一个用于这些任务的自定义工作项类型。然后,如果您将WIQL查询设置为
(半伪代码)
SELECT Id from WorkItems where
WorkItemType = 'MySpecialWorkItem' AND
Status = 'Active';
然后,您可以迭代并检查附加的SQL文件。使用WorkItemType和Status标准应该显着限制返回记录的数量,然后迭代附件不会影响流程的性能。