含TFS 2017及SQL Server的Server 2012升级至2016方案咨询
我之前帮几个客户完成过几乎完全一致的TFS升级操作,踩过不少实际的坑,给你整理一套实操步骤和关键注意点,帮你顺利完成升级:
一、升级前的必做准备(绝对不能省)
这一步是避免翻车的核心,别嫌麻烦:
- 全量备份三件套:
- TFS数据库:用SQL Server Management Studio对TFS的配置数据库(默认名
Tfs_Configuration)和所有集合数据库(Tfs_xxxCollection)做完整备份,包括事务日志,备份完成后一定要验证备份文件的完整性(右键备份文件→还原→验证备份)。 - TFS应用层数据:备份
C:\Program Files\Microsoft Team Foundation Server 15.0下的配置文件、构建代理的配置文件夹,还有你安装的NodeJs、Crystal Reports、Sandcastle等第三方工具的安装包和自定义配置文件。 - 系统状态:用Windows Server自带的Windows Server Backup做系统状态备份,万一系统升级炸了,能快速回滚到升级前的状态。
- TFS数据库:用SQL Server Management Studio对TFS的配置数据库(默认名
- 记录当前关键配置:
- 记下TFS的服务账户、构建代理的运行账户,还有各个构建定义里的工具路径(比如NodeJs的安装路径),升级后需要核对。
- 兼容性预检查:
- 确认SQL Server 2016和Windows Server 2016的兼容性(微软官方完全支持,放心);
- 确认TFS 2018对SQL Server 2016的支持(完全兼容,不需要升级SQL)。
二、原地升级Windows Server 2012到2016
- 前置操作:
- 释放足够磁盘空间:至少保留20GB以上的空闲空间,最好留30GB+,避免升级过程中空间不足失败。
- 停止所有非必要服务:先停TFS服务、SQL Server服务、构建代理服务,关闭杀毒软件、监控工具等第三方程序,避免升级冲突。
- 卸载不兼容软件:有些旧版本的杀毒软件、系统监控工具可能和Server 2016不兼容,先卸载,升级后再重装最新版。
- 执行系统升级:
- 插入Windows Server 2016安装介质,运行
setup.exe,选择「升级:安装Windows并保留文件、设置和应用程序」选项。 - 跟着向导走,注意选择和原系统一致的版本(比如原是Server 2012标准版,就选Server 2016标准版)。
- 升级过程会自动重启多次,别中断,耐心等待完成。
- 插入Windows Server 2016安装介质,运行
- 升级后验证:
- 系统启动后,先启动SQL Server服务,再启动TFS服务,访问TFS门户确认能正常打开,项目、工作项都能正常访问。
- 测试第三方工具:打开NodeJs、Crystal Reports等,确认能正常运行,跑一个旧项目的构建任务,验证基础功能正常。
三、升级TFS 2017到2018(保留NetBIOS名称)
原地升级完全可以保留服务器的NetBIOS名称,开发工作站不需要做任何配置变更,这点你放心:
- 前置准备:
- 再次备份TFS数据库(升级TFS前的保险操作);
- 卸载Visual Studio 2015 Update 3:虽然VS2017和旧版本可以共存,但为了避免构建工具冲突,建议先卸载旧版,再装VS2017。
- 安装Visual Studio 2017构建工具:
- 下载VS2017安装包,选择「Visual Studio Build Tools 2017」(如果只需要构建能力,不用装完整IDE,节省资源)。
- 勾选需要的 workload:.NET桌面开发、ASP.NET和Web开发、Node.js开发,还要确保勾选「C# and Visual Basic Roslyn compilers」组件(这是支持C#7编译的关键)。
- 安装完成后,本地新建一个C#7的测试项目,用
msbuild命令编译,确认编译器正常工作。
- 执行TFS 2018升级:
- 下载TFS2018安装介质,运行
setup.exe,选择「升级现有部署」。 - 向导会自动检测到TFS2017的部署,选择对应的配置数据库,跟着步骤走即可。
- 注意保持服务账户和之前一致,这样不需要重新配置权限。
- 升级完成后,重启TFS服务,访问TFS门户,确认所有项目、工作项、构建定义都正常显示。
- 下载TFS2018安装介质,运行
- 构建能力验证:
- 新建C#7项目的构建定义,用VS2017的构建工具执行构建,确认能成功编译;
- 测试旧项目的构建:运行之前的构建任务,检查NodeJs、Crystal Reports等工具是否正常调用,若工具路径有变化,在构建定义里更新即可。
四、踩过的坑和关键注意事项
- SQL权限问题:升级TFS时,TFS服务账户必须拥有SQL Server的
sysadmin权限,不然会报错;升级完成后可以把权限降回之前的设置,但升级过程中必须要有。 - 构建代理更新:升级TFS后,旧的构建代理可能会离线,需要重新注册:进入代理的安装目录,运行
.\config.cmd,跟着向导重新连接到TFS服务器即可。 - 第三方工具路径:升级系统后,若NodeJs等工具的路径发生变化(概率很低,但要检查),需要在构建定义里更新工具路径,或者把工具添加到系统环境变量中。
内容的提问来源于stack exchange,提问作者Jeroen1984
相关产品推荐
相关产品推荐

