Запрос для рабочих элементов, которые содержат вложения определенного типа - PullRequest
3 голосов
/ 07 июля 2010

В наших выпусках иногда необходимо запускать скрипты на нашей производственной базе данных. Стандарт заключался в том, чтобы прикрепить файл .sql к рабочему элементу, если на БД необходимо запустить скрипт.

Можно ли как-нибудь запросить рабочие элементы, содержащие вложение в формате .sql? Я бы предпочел не открывать каждый рабочий элемент для проверки этих вложений каждый раз, когда мне нужно нажать релиз.

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

Вот как я это сделал, запросив базу данных 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 голос
/ 08 июля 2010

Еще один способ сделать это с помощью WIQL, но при этом сохранить некоторый уровень производительности, - это создать пользовательский тип рабочего элемента, который вы будете использовать для этих задач. Затем, если вы настроите свой WIQL-запрос на

(пол-псевдокод)

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

Затем можно выполнить итерацию и проверить наличие прикрепленных файлов SQL. Использование критериев WorkItemType и Status должно значительно ограничить число возвращаемых записей, тогда повторение вложений не сильно повлияет на производительность процесса.

...