2016-05-26 1 views
0

Я пытаюсь создать список проектов в TFS 2015, которые активно работают (поэтому я знаю, какие команды уведомляют о запланированном времени простоя для обновления). Есть почти 70 проектов, поэтому щелчок по истории каждого из них слишком трудоемкий.Как я могу создать список последней регистрации для каждого проекта в TFS 2015?

Я видел примеры для более старых версий TFS, которые запрашивали tbl_ChangeSet с JOIN на tbl_identity, но эта таблица отсутствует в моей базе данных TFS 2015, и я не могу найти замену.

Так что мой вопрос: как мне присоединиться к OwnerId в tbl_ChangeSet в базе данных TFS 2015?

Конечно, пример полного запроса, который соответствует моей цели, тоже приветствуется, как и любые альтернативные методы (возможно, сценарий PowerShell?)!

ответ

0

Я нашел таблицу tbl_Identity!

В нашей компании у нас есть две коллекции TFS - назовем их FooBar и FooBar-DSG - двумя соответствующими базами данных: Tfs_FooBar и Tfs_FooBar-DSG.

Таблица [tbl_Identity] находится в базе данных с именем Tfs_Foobar_Configuration.

для поиска записей в [tbl_Identity] таблицы вы должны присоединиться [tbl_ChangeSet]. [OwnerId] на [tbl_IdentityMap]. [LocalId] и с помощью [tbl_IdentityMap]. [MasterId] присоединиться на [tbl_Identity]. Id

Вот что я в итоге сделал - не создавая список команд, а список пользователей с их адресом электронной почты и датой последней регистрации. Я могу использовать этот список для отправки электронной почты с уведомлением о времени простоя TFS.

Вот мои запросы:

SELECT DISTINCT [OwnerId], I.DisplayName, I.MailAddress, 
    (SELECT TOP 1 CreationDate FROM [Tfs_FooBar-DSG].[dbo].tbl_ChangeSet C2 
    WHERE C2.OwnerId = C1.OwnerId ORDER BY CreationDate DESC) LatestDate 
FROM [Tfs_FooBar-DSG].[dbo].[tbl_ChangeSet] C1 
LEFT OUTER JOIN [Tfs_FooBar-DSG].[dbo].[tbl_IdentityMap] IM ON IM.[localId] = C1.OwnerId 
LEFT OUTER JOIN Tfs_FooBar_Configuration.[dbo].[tbl_Identity] I ON IM.[masterId] = I.Id 
ORDER By LatestDate DESC, [OwnerId], DisplayName, MailAddress 

SELECT DISTINCT [OwnerId], I.DisplayName, I.MailAddress, 
    (SELECT TOP 1 CreationDate FROM [Tfs_FooBar].[dbo].tbl_ChangeSet C2 
    WHERE C2.OwnerId = C1.OwnerId ORDER BY CreationDate DESC) LatestDate 
FROM [Tfs_FooBar].[dbo].[tbl_ChangeSet] C1 
LEFT OUTER JOIN [Tfs_FooBar].[dbo].[tbl_IdentityMap] IM ON IM.[localId] = C1.OwnerId 
LEFT OUTER JOIN Tfs_FooBar_Configuration.[dbo].[tbl_Identity] I ON IM.[masterId] = I.Id 
ORDER By LatestDate DESC, [OwnerId], DisplayName, MailAddress 

Update: «Вы не должны писать запросы непосредственно на операционном магазине TFS Это не поддерживается и потенциально опасным» Daniel Mann предупреждает в своем комментарии ниже этого , Решите сами, если вы можете жить с неподдерживаемой функциональностью и насколько опасен запрос SELECT.

+1

Вы не должны писать запросы непосредственно в операционный магазин TFS. Он не поддерживается и потенциально опасен. –