You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TFS 2015升级至2018.3部分集合失败,求助恢复方法

解决TFS 2018.3集合升级ApplyPatch失败无法启动的问题

根据你描述的升级流程和遇到的TF400783错误,这通常是集合的维护作业(ApplyPatch)中断后处于挂起状态导致的。下面是一步步的恢复方案,按顺序尝试:

1. 先定位具体失败原因(关键第一步)

首先得找到ApplyPatch失败的具体日志,才能针对性解决:

  • 打开TFS 2018的安装目录,默认路径是C:\Program Files\Microsoft Team Foundation Server 2018\Application Tier\Logs
  • 找到日期为2019年3月8日、名称包含ServicingCollection-MyCollection1或ServicingHost的日志文件
  • 打开日志,搜索ERROR或Failed关键词,找到ApplyPatch步骤中具体的失败原因(比如权限不足、数据库文件损坏、SQL脚本执行错误等)

2. 尝试重新触发维护作业

如果日志显示是临时中断(比如服务重启、网络波动),可以用TFS命令行工具重试维护:

  1. 以管理员身份打开命令提示符
  2. 导航到TFS工具目录:cd C:\Program Files\Microsoft Team Foundation Server 2018\Tools
  3. 运行重试命令:
    TFSConfig servicing /retry /collectionName:MyCollection1
    
    或者针对单个集合修复:
    TFSConfig repair /collection:http://<你的TFS服务器地址>:8080/tfs/MyCollection1
    
    替换<你的TFS服务器地址>为实际的服务器名或IP,执行后等待命令完成,再去管理控制台尝试启动集合。

3. 检查并修复数据库权限

权限不足是升级失败的常见原因:

  • 打开SQL Server Management Studio(SSMS),连接到你的.\SQLEXPRESS实例
  • 分别查看TFS_Configuration数据库和TFS_MyCollection1数据库的权限:
    • 右键数据库 → 安全性 → 用户 → 找到TFS的服务账户(通常是TFSService)
    • 确保该账户拥有db_owner角色权限,如果没有,添加该角色
  • 完成权限设置后,再次尝试步骤2的重试命令

4. 重置集合的维护状态(谨慎操作,先备份!)

如果重试后还是失败,说明集合的维护状态在数据库中处于异常挂起状态,需要手动重置:

警告:操作前必须备份所有TFS数据库(TFS_Configuration和所有集合库),避免数据丢失!

  1. 在SSMS中连接到.\SQLEXPRESS,打开TFS_Configuration数据库
  2. 执行以下查询,找到MyCollection1的失败维护作业:
    SELECT sjd.JobId, sjd.JobStatus, sjd.Message
    FROM tbl_ServicingJobDetail sjd
    JOIN tbl_ServicingHost sh ON sjd.HostId = sh.HostId
    WHERE sh.Name = 'MyCollection1' AND sjd.JobStatus = 2 -- JobStatus=2代表失败
    
  3. 如果找到对应的失败作业,可以尝试将其状态重置为未开始(JobStatus=0):
    UPDATE tbl_ServicingJobDetail
    SET JobStatus = 0
    WHERE JobId = '<查询到的JobId>'
    
  4. 再切换到TFS_MyCollection1数据库,检查tbl_ServicingHost表的状态:
    SELECT * FROM tbl_ServicingHost
    
    确保ServicingState字段为0(正常状态),如果不是,更新为0:
    UPDATE tbl_ServicingHost
    SET ServicingState = 0
    
  5. 完成后,再次运行步骤2的重试命令,尝试启动集合。

5. 回滚后重新升级(终极方案)

如果以上方法都无效,建议回滚到升级前的状态再重新操作:

  1. 卸载TFS 2018.3
  2. 重新安装TFS 2015.3,附加你最初的TFS数据库(确保能正常启动和访问)
  3. 先确认SQL Server 2017的实例配置正确(实例名.\SQLEXPRESS,权限正常),将TFS数据库迁移到SQL Server 2017(或者直接升级SQL Server到2017,保留实例名)
  4. 运行TFS 2018.3的升级向导,每一步都仔细查看提示,遇到错误及时根据日志解决,确保所有集合升级完成。

另外,还要注意检查集合数据库的兼容性级别:在SSMS中右键集合数据库→属性→选项,将兼容性级别设置为SQL Server 2016 (130)或更高,TFS 2018.3需要这个级别支持。

内容的提问来源于stack exchange,提问作者mrbm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:19:29