You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Dockerfile安装SQL Server 2019 CU27后版本未更新问题

解决SQL Server 2019 CU补丁安装后版本未更新的问题

排查步骤与解决方法

  • 确认补丁安装的目标实例
    Windows容器中SQL Server开发者版默认实例为MSSQLSERVER,补丁安装时必须指定实例名才能确保补丁打到正确服务。检查你的Dockerfile中补丁安装命令是否包含/INSTANCENAME=MSSQLSERVER参数,正确命令示例:

    SQLServer2019-KB5029086-x64.exe /quiet /IAcceptSQLServerLicenseTerms /INSTANCENAME=MSSQLSERVER
    

    查看补丁安装日志,搜索Instance Name字段,确认安装目标是MSSQLSERVER。

  • 强制重启SQL Server服务
    CU补丁安装完成后必须重启SQL服务才能生效,Docker构建过程中不会自动触发重启。在Dockerfile的补丁安装步骤后添加重启命令:

    RUN net stop MSSQLSERVER && net start MSSQLSERVER
    

    注意:确保容器内sa密码环境变量MSSQL_SA_PASSWORD已正确设置,避免重启后服务无法启动。

  • 验证版本查询的准确性
    执行完整的sqlcmd命令确认查询的是本地默认实例:

    sqlcmd -S . -U sa -P ${MSSQL_SA_PASSWORD} -Q "SELECT @@VERSION; SELECT SERVERPROPERTY('ProductVersion'), SERVERPROPERTY('ProductUpdateLevel');"
    

    若ProductUpdateLevel返回NULL说明补丁未生效,返回CU27则补丁已成功应用。

  • 避免Docker构建缓存干扰
    Docker会缓存已执行的构建层,若之前的RTM安装层被复用,补丁可能未实际执行。构建镜像时添加--no-cache参数强制重新构建所有层:

    docker build --no-cache -t sql2019-cu27 .
    

    或在Dockerfile中修改补丁文件的复制方式,确保每次构建都触发安装步骤:

    ADD --chmod=755 ./SQLServer2019-KB5029086-x64.exe /temp/
    RUN /temp/SQLServer2019-KB5029086-x64.exe /quiet /IAcceptSQLServerLicenseTerms /INSTANCENAME=MSSQLSERVER
    
  • 检查补丁安装日志细节
    不要仅依赖最终的Passed结果,查看日志中是否有Patch installation completed successfully for instance 'MSSQLSERVER'的明确提示。日志默认路径为C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\<日期文件夹>\Summary.txt,可在Dockerfile中添加复制日志的步骤以便后续排查:

    COPY "C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log" /sql-patch-logs/
    

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:58:19