Azure DevOps数据库部分恢复遇阻,需移除未恢复集合注册信息
解决TFS部分集合恢复后的未恢复集合注销问题
我们从生产环境备份恢复了Tfs_Configuration和Tfs_DefaultCollection到测试SQL Server,但未恢复其他集合,在运行tfsconfig remapdbs时遇到错误:
TF246064: No database could be found for the following host: CollectionName2. The host has the following ID: [guid]. To fix this problem, use the TFSCOnfig RemapDBs command-line tool and make sure that you specify the SQL Server instance that contains this database.
尝试常规的tfsconfig collections /detach、/delete及离线分离操作均失败,以下是可行的解决方法:
方法1:使用remapdbs的/skipcollections参数
运行remapdbs时添加/skipcollections参数,跳过未恢复的集合数据库,命令示例:
tfsconfig remapdbs /databaseName:SQLInstanceName;Tfs_Configuration /sqlInstance:SQLInstanceName /skipcollections
该参数会让TFS忽略找不到的集合,仅处理已恢复的配置库和存在的集合库。
方法2:手动修改Tfs_Configuration数据库(需谨慎)
若方法1无效,可通过修改配置库的关联表移除未恢复集合,需按以下步骤操作(操作前务必备份测试库):
- 获取报错中未恢复集合的Host ID(即
[guid]) - 将该集合标记为离线:
UPDATE tbl_ServiceHost SET Status = 3 -- 3代表离线状态 WHERE HostId = '你的集合GUID'
- 删除关联的数据库记录:
DELETE FROM tbl_Database WHERE HostId = '你的集合GUID'
- 清理服务主机的关联属性记录:
DELETE FROM tbl_ServiceHostProperty WHERE HostId = '你的集合GUID'
完成上述操作后,重新运行tfsconfig remapdbs即可正常处理已恢复的集合。
注意事项
- 操作数据库前必须备份测试环境的
Tfs_Configuration库,避免误操作导致数据损坏 - 验证操作完成后,确认
Tfs_DefaultCollection可正常访问,确保数据提取流程正常
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

