我正在尝试编写一个SQL查询,该查询将在TFS 2015内部部署的变更通知中列出所有共享和用户拥有的VSTS。根据我的研究,通知应该存储在tbl_EventSubscription表中,但是没有关于事件是用户拥有还是共享的信息,只是订阅者的订阅ID,我不知道在哪里搜索所有者。
如果有可能使用REST API解决这个问题,它也会有所帮助。
非常感谢任何帮助或指导。
答案 0 :(得分:0)
不建议您直接深入了解TFS数据库。不要对TFS数据库进行任何更改,否则您可能会失去Microsoft的支持。
由于您已经获得了SubscriptionID,因此要找出" SubscriberId"中的GUID背后隐藏了哪个用户身份。在列中,您可以使用以下SQL语句:
SELECT es.Id,
es.EventType,
es.Expression,
sic.mail_address,
sic.computed_display_name
FROM tbl_EventSubscription es
JOIN [Tfs_Configuration].[dbo].tbl_security_identity_cache sic
ON sic.tf_id = es.SubscriberId
WHERE es.Id = 123
更多详细信息,请查看此博客:Who created that TFS event subscription?
答案 1 :(得分:0)
好吧,我想我明白了:
SELECT Notif.Id AS 'Notification Id',
Notif.EventType AS 'Event Type',
Notif.Classification AS 'Notification Classification',
Const.IdentityDisplayName AS 'Notification Owner'
FROM [Tfs_Development].[dbo].[tbl_EventSubscription] Notif
LEFT JOIN [Tfs_Development].[dbo].[Constants] Const ON Const.TeamFoundationId = Notif.SubscriberId
ORDER BY Notif.Id
@ PatrickLu-MSFT我不知道为什么,但我在Tfs_Configuration中没有tbl_security_identity_cache,但是我在Tfs_Development中有它并且它是空的。我使用Tfs_Configuration.dbo.tbl_Identity作为用户名的参考,但它没有为团队订阅者甚至一些用户返回我的名字,所以最后我会选择我的解决方案。
感谢您的帮助。