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命令行工具重试维护:
- 以管理员身份打开命令提示符
- 导航到TFS工具目录:
cd C:\Program Files\Microsoft Team Foundation Server 2018\Tools - 运行重试命令:
或者针对单个集合修复: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角色权限,如果没有,添加该角色
- 右键数据库 → 安全性 → 用户 → 找到TFS的服务账户(通常是
- 完成权限设置后,再次尝试步骤2的重试命令
4. 重置集合的维护状态(谨慎操作,先备份!)
如果重试后还是失败,说明集合的维护状态在数据库中处于异常挂起状态,需要手动重置:
警告:操作前必须备份所有TFS数据库(TFS_Configuration和所有集合库),避免数据丢失!
- 在SSMS中连接到
.\SQLEXPRESS,打开TFS_Configuration数据库 - 执行以下查询,找到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代表失败 - 如果找到对应的失败作业,可以尝试将其状态重置为未开始(JobStatus=0):
UPDATE tbl_ServicingJobDetail SET JobStatus = 0 WHERE JobId = '<查询到的JobId>' - 再切换到
TFS_MyCollection1数据库,检查tbl_ServicingHost表的状态:
确保SELECT * FROM tbl_ServicingHostServicingState字段为0(正常状态),如果不是,更新为0:UPDATE tbl_ServicingHost SET ServicingState = 0 - 完成后,再次运行步骤2的重试命令,尝试启动集合。
5. 回滚后重新升级(终极方案)
如果以上方法都无效,建议回滚到升级前的状态再重新操作:
- 卸载TFS 2018.3
- 重新安装TFS 2015.3,附加你最初的TFS数据库(确保能正常启动和访问)
- 先确认SQL Server 2017的实例配置正确(实例名
.\SQLEXPRESS,权限正常),将TFS数据库迁移到SQL Server 2017(或者直接升级SQL Server到2017,保留实例名) - 运行TFS 2018.3的升级向导,每一步都仔细查看提示,遇到错误及时根据日志解决,确保所有集合升级完成。
另外,还要注意检查集合数据库的兼容性级别:在SSMS中右键集合数据库→属性→选项,将兼容性级别设置为SQL Server 2016 (130)或更高,TFS 2018.3需要这个级别支持。
内容的提问来源于stack exchange,提问作者mrbm
相关产品推荐
相关产品推荐

