升级TFS 2018.3到Azure DevOps Server 2019时遇“Nullable object must have a value.”错误
针对Azure DevOps Server 2019升级卡在SQL选择界面的排查方案
我之前帮不少用户处理过类似的TFS到Azure DevOps Server升级卡住的问题,结合你提供的环境信息,给你几个针对性的排查和解决方向:
检查SQL Server权限与兼容性
- 首先确认运行配置向导的账户(或应用层服务账户)对目标SQL实例拥有sysadmin权限,升级过程需要修改数据库架构、创建系统对象,权限不足很可能导致向导静默停滞
- 查看现有TFS数据库的兼容性级别:执行SQL语句
SELECT name, compatibility_level FROM sys.databases WHERE name LIKE 'Tfs%',Azure DevOps Server 2019建议将数据库兼容性调整为140(对应SQL 2017),如果当前是130(TFS 2018默认),用ALTER DATABASE [Tfs_你的集合名] SET COMPATIBILITY_LEVEL = 140逐个修改(替换集合名)
验证SQL连接与网络配置
- 在应用层服务器上手动测试SQL连接:打开命令提示符执行
sqlcmd -S <你的SQL实例名> -U <有权限的账户> -P <密码>,确认能正常连接并执行查询,排除防火墙拦截、网络不通的问题 - 检查SQL Server配置管理器,确保TCP/IP协议已启用,跨服务器连接依赖TCP/IP,若只启用命名管道可能导致连接失败
- 在应用层服务器上手动测试SQL连接:打开命令提示符执行
清理配置向导缓存文件
- 向导的临时缓存文件可能损坏导致异常,删除以下路径的缓存后重启服务器再尝试:
C:\ProgramData\Microsoft\Team Foundation\Server ConfigurationC:\Users\<你的登录账户>\AppData\Local\Microsoft\Team Foundation\16.0\Cache
- 向导的临时缓存文件可能损坏导致异常,删除以下路径的缓存后重启服务器再尝试:
升级SQL Server补丁级别
- 你的SQL 2017版本是14.0.2002.14(RTM版),Azure DevOps Server 2019要求SQL 2017至少更新到CU10(14.0.3035.2)及以上,旧补丁存在已知的兼容性问题,建议先给SQL Server安装最新的累积更新
尝试命令行手动升级
- 图形化向导的错误日志可能不够详细,用命令行工具执行升级能输出更精准的错误信息:
- 以管理员身份打开命令提示符,导航到
C:\Program Files\Azure DevOps Server 2019\Tools - 执行配置数据库升级:
TfsConfig upgrade /sqlInstance:<SQL实例名> /databaseName:<Tfs_Configuration> - 若要升级集合数据库,添加集合参数:
TfsConfig upgrade /sqlInstance:<SQL实例名> /databaseName:<Tfs_你的集合名> /collectionName:<你的集合名> - 观察命令行输出的报错,这会帮你定位具体问题
- 以管理员身份打开命令提示符,导航到
- 图形化向导的错误日志可能不够详细,用命令行工具执行升级能输出更精准的错误信息:
内容的提问来源于stack exchange,提问作者Peter Staev
相关产品推荐
相关产品推荐

