在TFS中编辑项目的其他用户警报

时间:2009-09-18 20:44:50

标签: tfs

我出乎意料地接替了我们TFS系统的前任管理员,他们突然离开了公司。在发生这种情况之前,我成了TFS管理员和TFS应用服务器的管理员,但至少还有一件我无法弄清楚的事情。似乎在以前的管理员帐户下设置了一些警报,每当签入文件时都会向我们所有人发送电子邮件。我无法确切地说出这个订阅的确切含义,但我猜它是在项目的“项目警报”对话框,或者是使用TFS Power Tools的警报编辑器设置的警报。我无法在这些区域看到其他用户设置的警报。有没有办法直接编辑tbl_subscription表来尝试删除或更改这些警报? (我想我在SQL表中看到了警告,但我不想直接破解数据库。)

6 个答案:

答案 0 :(得分:23)

欢迎来到TFS的世界 - 对不起,你的洗礼将成为一场火灾。

警惕直接编辑数据库是正确的 - 总是最好避免使用TFS。 TFS Event Subscription tool(最初制作by this sites creator)应该可以胜任这项工作,但我认为它可能有点过时,可以用一些爱来做。上次我尝试它并不适合我 - 但我认为从那以后它可能已经更新了。

如果该工具不适合您,那么这是一个实际可以直接使用Web服务的实例(这是该工具在幕后的工作)。

CAVEAT - 使用“Works on My Machine”保证对此进行测试。但是如果你删除了错误的订阅,那么你就有可能搞乱你的TFS instanllation。因此,请小心备份并谨慎行事......

开始:

通过远程桌面以TFS管理员用户(TFSSETUP)身份登录TFS计算机,然后在Internet Explorer中浏览到以下地址:

http://localhost:8080/Services/V1.0/EventService.asmx

这些是Event Service Web服务方法。您要查看的第一个是EventSubscriptions方法: -

http://localhost:8080/Services/V1.0/EventService.asmx?op=EventSubscriptions

在用户ID字段中,输入星号(*),然后按调用。

这将返回TFS中所有事件订阅的大清单 - 包括允许部分TFS与其他部分通信的订阅。如果向下滚动,您将找到您的电子邮件订阅。记下要删除的ID的ID。

然后转到取消订阅方法:

http://localhost:8080/Services/V1.0/EventService.asmx?op=UnsubscribeEvent

输入要删除的通知的ID,然后按调用。对要删除的所有事件重复此操作。

一旦你删除了你不想要的那些,你就可以使用电动工具等创建不同的那些。

希望有所帮助 - 祝你好运。

马丁。

请注意,请不要获得任何友好的撤消提示或任何内容,因为这是相当低级的hackery。因此,在执行此操作之前,您需要备份等。

答案 1 :(得分:10)

我很高兴地说,在当前版本的TFS和Visual Studio Team Services中,管理员可以使用Team Web Access管理其他用户的警报。值得庆幸的是,这应该是过去令人沮丧的情景。

我在这里为此主题撰写的博客文章中提供了更多信息:http://www.edsquared.com/2012/02/09/Creating+EMail+Alerts+For+Team+Members+In+TFS.aspx

enter image description here

答案 2 :(得分:1)

我会非常谨慎地直接编辑表格;请参阅this thread中的注意事项和建议。 (我没有尝试过他们推荐的应用程序,因此请采取适当的预防措施/备份。)

答案 3 :(得分:0)

我同意Martin关于不直接编辑数据库的问题,但是这个查询可能有助于他的第一步(找到你要取消订阅的事件的id):

SELECT 
ES.Id, 
U.display_name, 
ES.*
  FROM [Tfs_iSystems].[dbo].[tbl_EventSubscription] ES
 INNER JOIN [Tfs_Configuration].dbo.tbl_security_identity_cache U
 ON ES.SubscriberId = U.tf_id

我发现使用webservice生成的XML很麻烦。 一旦你拥有了你需要的ID,我建议你使用网络服务取消订阅:

http://localhost:8080/tfs/DefaultCollection/Services/V1.0/EventService.asmx?op=UnsubscribeEvent

请注意这是针对TFS2010的

答案 4 :(得分:0)

我不确定我到底在做什么,但我确实取得了一个小小的胜利,并且能够让页面出现,但我不得不改变道路:

“HTTP://本地主机:8080 / TFS / _tfs_resources /服务/ V1.0 / EventService.asmx”

答案 5 :(得分:0)

这在TFS 2010上对我有用。基本上有一个存储过程可以删除TFS数据库中的订阅。

  1. 连接到TFS机器
  2. 运行ssms
  3. 选择本地计算机作为要连接的计算机。
  4. 在对象资源管理器中,查找名为tfs_yourprojectname
  5. 的数据库
  6. 找到名为tbl_EventSubscription的表格并右键单击=>选择前1000名
  7. 查看订阅列表并确定要删除的ID
  8. 在对象资源管理器中查找名为prc_UnsubscribeEvent的存储过程,右键单击并选择“执行存储过程”。在事件订阅表中输入要删除的警报的id列的值。