TFS 2012 - TF400013:发生意外的数据库错误

时间:2012-12-17 14:52:42

标签: tfs tfs2012

我有一个关键问题:我有一个TeamProjectCollection。在这个系列中我有一个项目。我需要重新创建相同的项目。我删除了这个项目并再次创建项目。在此之后我在TFS上得到下一个错误: enter image description here

当我尝试从此集合中打开任何项目时出现此错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

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

在我的系统上,TFS [TEST] Web应用程序损坏了,因为有人(我)向对话框中列出的页面查询添加了[Column option](来自页面的UI),但显然不支持。页面的数据表查询由于内部数据库错误“无效的列名”而失败。在SQL事件探查器中,在数据表填充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'