我最近恢复了 TFS 2010 部署的 DB 部分,目前当客户端打开旧工作项时会出现错误:
调用 COM 组件时返回错误 HRESULT E_FAIL。
显然这是一个缓存问题,我尝试了以下方法。浏览到https://主机名/workitemtracking/v3.0/clientservice.asmx并单击 StampWorkItemCache,然后单击 Invoke。
这反过来又会产生错误:
无法生成临时类(结果=1)。错误 CS0200: 无法将属性或索引器 'Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemLinkChange.SourceID' 分配给 - 它是只读的错误 CS0200: 无法将属性或索引器 'Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemLinkChange.TargetID' 分配给 - 它是只读的错误 CS0200: 无法将属性或索引器 'Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemLinkChange.LinkType' 分配给 - 它是只读的错误 CS0200: 无法将属性或索引器 'Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemLinkChange.IsActive' 分配给 - 它是只读的错误 CS0200: 无法将属性或索引器 'Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemLinkChange.ChangedDate' 分配给 - 它是只读的错误 CS0200:属性或索引器无法分配“Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemLinkChange.RowVersion”——它是只读的
有任何想法吗?
答案1
我不确定您是否已解决此问题,但您需要完成两个步骤:
- 更改已恢复集合的服务器 ID
- 重建仓库内的数据
要更改服务器 ID,请登录到安装了应用程序层的服务器,在命令窗口中浏览到 %ProgramFiles%\Microsoft Team Foundation Server 2010\Tools\ 并运行以下命令:
TfsConfig changeServerId /sqlInstance:[sqlInstance] /databaseName:[数据库名称] /projectCollectionsOnly
我添加了 projectCollectionsOnly 开关,因为我假定您已经恢复了 TFS 集合数据库。
要重建仓库,请运行以下命令(必须执行此操作,否则您将在 TFS_Warehouse 中得到重复的工作项):
TfsConfig 重建仓库 /all
希望有所帮助。
萨马德