我们最近将 Team System 安装从虚拟机移到了物理服务器上。大多数方面似乎都运行正常(工作项、源代码控制等),但每小时都会在事件日志中看到以下错误(可能是在仓库更新时)
事件类型:错误
事件来源:TFS Warehouse
事件类别:无
事件 ID:3000
日期:2009 年 3 月 6 日
时间:12:26:32
用户:N/A
计算机:TFS1
描述:
TF53010:Team Foundation 组件或扩展中发生了以下错误:
日期(UTC):2009 年 3 月 6 日 11:26:32
计算机:TFS1
应用程序域:/LM/W3SVC/1724018147/Root/Warehouse-3-128884367959382827
程序集:Microsoft.TeamFoundation.Warehouse,Version=9.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
进程详情:
进程名称:w3wp
进程 ID:5080
线程 ID:6016
帐户名称:NTSERVERS\sqlservice
详细消息:TF51209:运行时错误 System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键。
在 System.ThrowHelper.ThrowKeyNotFoundException()
在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)
在 Microsoft.TeamFoundation.WorkItemTracking.Adapter.Adapter.FindTreeNodeUriFromId(Object id, Int32 treeStructureType) 在 Microsoft.TeamFoundation.WorkItemTracking.Adapter.Adapter.ProcessKeywordValue
(FactEntry fact, PayloadRow fieldRow, PayloadRow dr) 在 Microsoft.TeamFoundation.WorkItemTracking.Adapter.Adapter.AddWorkItemFactEntry(PayloadRow dr, String projectUri, String previousState, DateTime dtChangedDate)
在 Microsoft.TeamFoundation.WorkItemTracking.Adapter.Adapter.PopulateFacts(PayloadRow dr)
在 Microsoft.TeamFoundation.WorkItemTracking.Adapter.Adapter.MakeDataChanges()
在Microsoft.TeamFoundation.Warehouse.AdapterWrapper.RunTimerAdapter() 发生在适配器 Microsoft.TeamFoundation.WorkItemTracking.Adapter.Adapter 上。
有关详细信息,请参阅帮助和支持中心http://go.microsoft.com/fwlink/events.asp。
我们连夜重新应用了 TFS 2008 SP1 来纠正另一个问题(添加的迭代未出现在工作项迭代列表中)。我们注意到两个不同项目的几个迭代消失了,尽管我们能够追踪到工作项(它们的迭代条目是空白的)。我认为我们可能遇到了仓库迭代在某种程度上损坏的问题?
感谢帮助...
编辑 09/06/2009:如果有帮助的话,请提供更多信息。我们的系统团队在对 TFS 服务器进行维护工作时丢失了三周的 TFS 数据。他们在工作之前进行的数据库备份“丢失”了,我们不得不恢复到 3 周前的备份。这似乎是错误的原因,因为在仓库重建后,我可以看到事件发生前的指标,而事件发生后则看不到任何指标。是的,我们的 TFS 服务器现在处于黄金状态,并且所有必要的备份都已到位 :)
答案1
您是否尝试过使用 SetupWarehouse 命令重建仓库数据库(关系数据库和 OLAP 数据库):
答案2
您可能在支持 TFS 的 SQL Server 数据库中存在损坏。您是否有 DBA 或熟悉 SQL Server 的人可以在数据库上运行 DBCC CHECKDB?
答案3
这确实是 TFSWarehouse 表中的损坏迭代。我们向 MS 支持付费,他们提供了一个自定义脚本来纠正此问题(基本上是重新映射损坏迭代上的工作项)