2009-09-18 62 views
20

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

回答

23

欢迎来到TFS世界 - 抱歉您的洗礼将成为火灾之一。

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

如果该工具不适合您,那么这是一个您可以直接使用Web服务(这是该工具在底层实现的功能)的实例。

CAVEAT - 这是与“在我的机器上工作”保证测试。但是,如果您删除了错误的订阅,那么您可能会搞砸TFS实例。因此采取备份和谨慎行事......

首先:

登录到TFS机作为TFS管理员用户(TFSSETUP)通过远程桌面,然后浏览到在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。重复所有您想要移除的事件。

一旦你删除那些你不想让你可以使用电动工具等

希望帮助创建不同的 - 好运气。

Martin。

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

+0

我不知道我将能够确定tfssetup密码。我是机器上的管理员。如果我无法确定密码,是否有安全的方法来设置密码? – BlueMonkMN 2009-09-21 12:36:24

+0

EventSubscriptionTool似乎足够好,至少可以删除订阅。 – BlueMonkMN 2009-09-21 13:50:06

+5

对于2010,请尝试http:// localhost:8080/tfs/DefaultCollection/Services/V1.0/EventService.asmx等 – 2011-06-10 03:45:06

1

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

0

我与马丁对此表示赞同不能直接编辑数据库,但此查询可能与他的第一个步骤的帮助(查找您想要取消订阅事件的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 

我发现使用由web服务产生的XML繁琐的工作。 一旦你有你需要我会通过使用WebService建议退订的Id:

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

注意这是TFS2010

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

+0

看起来不错!备受期待的功能 – KMoraz 2012-02-09 23:06:34

+1

这就是要走的路! – fmuecke 2014-12-19 07:47:09

+1

同时它是当前的TFS版本。这应该是被接受的答案,或者应该至少有更多的赞扬 – CodingYourLife 2017-02-22 10:34:17

0

我不知道到底是什么,我还没有在这里做什么,但我只是有一个小的胜利并能得到的页面上来,但我不得不改变路径,以这样的:

的“http://本地主机:8080/TFS/_tfs_resources /服务/ 1.0/EventService.asmx”

0

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

  1. 连接到TFS机
  2. 运行SSMS
  3. 选择本地机器的机器连接。
  4. 在对象资源管理器中,查找名为tfs_yourprojectname的数据库。
  5. 查找表命名tbl_EventSubscription并点击右键=>在订阅列表中选择顶1000
  6. 查找并决定要删除
  7. 寻找在对象命名prc_UnsubscribeEvent存储过程中的一个的ID浏览器,右键单击并选择“执行存储过程”。输入事件订阅表中的id列的值,以获取要删除的警报。
相关问题