使用TFS计划备份/还原将TFS2015数据库恢复到TFS2018失败
我之前处理过不少TFS跨版本升级的案例,结合你的场景,给你几个针对性的排查和解决步骤:
1. 补全TFS服务账户的权限配置
你已经设置了共享文件夹权限,但TFS还原工具需要的权限不止于此,得确保运行TFS服务的账户(默认是NT SERVICE\TFSService)同时拥有:
- SQL Server实例的sysadmin服务器角色权限(至少也要
dbcreator+securityadmin组合权限),因为TFS需要创建/修改数据库并配置底层权限; - 备份文件夹的读取+修改权限(还原过程中会生成临时文件,仅读取权限可能不够)。
可以在SSMS里给该账户添加对应角色,重启TFS服务后再尝试还原操作。
2. 以管理员身份运行TFS配置工具
普通权限下,TFS配置工具经常无法访问SQL Server的系统视图或执行高权限操作,导致“列出备份”功能失效。右键点击TFS 2018配置工具,选择以管理员身份运行,再重试操作。
3. 验证备份文件的完整性
虽然SSMS能还原,但TFS的还原工具对备份文件的校验更严格。在SSMS里执行以下命令验证备份文件:
RESTORE VERIFYONLY FROM DISK = '\\你的共享服务器路径\TFS_FullBackup.bak'
如果返回“备份集有效”说明文件没问题;如果报错,重新从TFS 2015生成完整备份。
4. 手动指定备份路径跳过自动扫描
有时候UNC路径解析或自动扫描机制会出问题,你可以直接在TFS还原界面手动输入备份文件的完整UNC路径(比如\\DBServer\TFSBackup\FullBackup_202X.bak),跳过“列出备份”步骤直接尝试还原。
5. 查看TFS的详细日志
你说日志无记录,可能是没找对位置。TFS 2018的还原相关日志通常在:C:\Program Files\Microsoft Team Foundation Server 2018\Application Tier\Logs
打开最新的TfsConfig.log或TFS_*_Restore.log文件,里面大概率能找到隐藏的错误(比如SQL连接失败、权限不足等)。
关于预生产升级保护措施的担忧
你用SSMS还原数据库后,只要后续执行TFS的升级配置步骤,就不会遗漏预生产的保护机制:
- 打开TFS 2018配置工具,选择应用层只有配置;
- 按照向导连接到还原后的数据库;
- 向导会自动执行数据库架构升级、权限校准、服务初始化等核心保护操作;
- 也可以手动执行命令行升级:
TfsConfig upgrade /configure
完成后建议运行TfsConfig health命令做一次健康检查,确认所有组件正常。
内容的提问来源于stack exchange,提问作者BWW

