2016-05-26 44 views
0

我正試圖在TFS 2015中生成正在積極工作的項目列表(因此我知道哪些團隊要通知計劃的停機時間以進行升級)。有將近70個項目,因此點擊每個項目的歷史記錄都有點過於勞動密集。如何在TFS 2015中爲每個項目生成最新簽入列表?

我看過tbl_identity的JOIN查詢tbl_ChangeSet的舊版TFS的示例,但該表在TFS 2015數據庫中缺失,我無法找到替換。

所以我的問題是:我如何加入TFS 2015數據庫tbl_ChangeSet中的OwnerId?

與我的目標相匹配的完整查詢的例子當然也是受歡迎的,就像任何其他方法(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 

更新:「你不應該直接寫查詢針對TFS操作店這是不受支持的和潛在的危險」丹尼爾·曼恩警告在下面,他的評論。自己決定是否可以忍受不受支持的功能,以及SELECT查詢的危險程度。

+1

您不應直接針對TFS操作存儲區編寫查詢。它不受支持並具有潛在的危險性。 –

相關問題