故事是这样开始的,一天开发人员求助说,在浏览器中修改了系统默认的工作项查询“已指派给我”的后,发现这个查询每次都提示超时,并且没有办法恢复到初始的设置状态,因为出现超时提示以后,查询编辑器就无法使用,如下图:
找遍了所有可以编辑工作项查询的工具,Visual Studio, Eclipse都没有看到可以编辑系统默认查询的功能。即使在浏览器中使用“另存为”的方法把“已指派给我”保存为另外一个查询,也无法恢复系统默认的状态。已经觉得自己黔驴技穷了,并且由于这事发生在生产系统中,有好几千开发人员每天在平台上工作,不敢直接在数据库中做动作,最后只好联系微软TFS产品组,向开发人员求助。
TFS产品组开发人员很快有了回音,并给出了修复方案,看来在MVP群里混,还是有好处的。
下面把修复的方案贴在这里,希望能够对碰到同样问题的朋友提供帮助:
微软开发人员的回复是这样的,在TFS 2013中,工作项查询过程中如果出现超时现象,查询编辑器则被禁止使用;好在这个非常不方便的用户体验在最新版的TFS 2017中得到了改善,用户可以修改查询了。在TFS 2013中,你必须按照下面的方案直接修改数据库中的相关记录:
-- The query needs to run on the same collection database where the project lives. Change the database name if it is different
USE [Tfs_DefaultCollection]
-- Find user id from datatable based on its domain and username. It is recommended to double check the data to make sure we are selecting the right user
DECLARE @userId nvarchar(50);
SELECT @userId = TeamFoundationId FROM [dbo].[Constants] WHERE DomainPart = ‘<Domain name>‘ AND NamePart = ‘<Domain username>‘
-- Find project id from datatable based on its name. It is recommended to double check the data to make sure we are selecting the right project
DECLARE @projectId nvarchar(50);
SELECT @projectId = project_id FROM [dbo].[tbl_projects] WHERE project_name = ‘<Project name>‘
-- This will reset the “Assigned to me” query on the selected user
DELETE FROM [dbo].[tbl_RegistryItems]
WHERE ParentPath = ‘#\Users\‘ + @userId + ‘\WebAccess\Projects\‘ + @projectId + ‘\Queries\a2108d31-086c-4fb0-afda-097e4cc46df4\‘