2

我有一个关键问题:我有一个 TeamProjectCollection。在这个集合中,我有一个项目。我需要重新创建相同的项目。我删除了这个项目并再次创建项目。在此之后,我在 TFS 上收到下一个错误: 在此处输入图像描述

当我尝试打开此集合中的任何项目时,会出现此错误。我怎样才能解决这个问题?

4

1 回答 1

0

可能为时已晚,无法帮助 OP,...但是对于遇到此“TF400013:发生意外数据库错误”的任何其他人来说,这是我在 TFS2013 系统上解决它的方法。

  1. 从管理员帐户启动 TFS 服务器上的 Microsoft SQL Server Management Studio (SMS)。
  2. 从 SMS 的顶级菜单启动 [Tools|SQL Server Profiler]
  3. 当提示 [Trace Properties] 时,选择TSQL[Use the template:] 组合框;因为默认值通常只会在 [TextData] 列中显示“加密文本”。 SQL 事件探查器|跟踪属性
  4. 执行违规操作。在我的例子中,我列出了来自 TFS Web 应用程序的项目的高级 [TEST] 页面。
  5. 停止 SQL Profiler 中的跟踪并筛选相关的 [TextData] 列以查找正在生成“意外数据库错误”的违规 SQL。
  6. 这可以通过将 [TextData] SQL 从 SQL Profiler 复制到 SMS 中的查询窗口来完成。您可能需要添加一个USE Tfs_xxx,xxx替换为您的 [Team Project Collection] 名称。请注意,某些查询旨在使用前面的 SQL 运行USE Tfs_TFSConfiguration,标识 TFSConfiguration 数据库而不是项目集合数据库。
  7. 您可以在 SMS 中使用有问题的 SQL 来纠正“意外的数据库错误”,获得更好的诊断错误消息,并获得对 TFS 系统进行 UI 或数据库更正所需的可能洞察力。

!!!请注意,您从 SMS 对 TFS 数据库所做的任何更改都将使您的 Microsoft TFS 支持协议无效。!!!

在我的系统上,TFS [TEST] Web 应用程序崩溃了,因为有人(我)向对话框中列出的页面查询添加了一个 [Column option](来自页面的 UI),但显然不受支持。页面的数据表查询因“列名无效”的内部数据库错误而失败。在 SQL Profiler 中,在数据表填充 SQL 之前,有一个查询要显示的列,其中包括 SQL 结果中的违规“未知列名”:

exec prc_QueryRegistry
 @partitionId=1
,@registryPath=N'#\Users\f64...91f\WebAccessTestManagement\b81...cb7\TestHub\ColumnSettings\'

对我来说最快的解决方法是取消我不存在的Microsoft TFS 支持协议,通过在 SMS 中执行以下 SQL 来清除此列设置

exec prc_SetRegistryValue @partitionId=1
,@key=N'#\Users\f64...91f\WebAccessTestManagement\b81...cb7\TestHub\ColumnSettings\'
,@value=''
,@identityName='your name here'
于 2018-06-20T22:26:34.207 回答