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

Docker部署MSSQL时设置MSSQL_COLLATION不生效如何处理

问题原因

核心原因是 MSSQL_COLLATION 环境变量仅在容器首次启动、初始化系统数据库的阶段生效。你当前挂载的本地数据目录 C:/Users/User1/sql-server/data 中已经存在之前初始化生成的系统库文件,后续重启容器时不会重新执行初始化流程,因此新设置的排序规则无法覆盖原有默认值。

解决方案

你可以根据自身数据情况选择以下两种方案处理:

方案1:无重要数据可清空挂载目录时使用

  • 先停止并删除当前运行的SQL Server容器:
docker stop <你的容器ID或容器名称> && docker rm <你的容器ID或容器名称>
  • 清空本地挂载目录 C:/Users/User1/sql-server/data 下的所有文件(操作前请确认无需要保留的数据)
  • 重新执行你原来的容器创建命令即可,本次初始化系统库会读取你设置的 MSSQL_COLLATION 参数,排序规则会正常生效。

方案2:挂载目录已有重要数据不可清空时使用

需要手动进入容器修改服务器排序规则:

  • 进入运行中的容器终端:
docker exec -it <你的容器ID或容器名称> /bin/bash
  • 停止容器内的SQL Server服务:
/opt/mssql/bin/mssql-conf stop
  • 执行排序规则修改命令:
/opt/mssql/bin/mssql-conf set-collation Polish_CI_AS
  • 按照终端提示输入sa账号的密码,等待修改完成后退出容器终端,重启容器:
docker restart <你的容器ID或容器名称>
  • 重启完成后可执行以下SQL语句验证排序规则是否生效:
SELECT SERVERPROPERTY('Collation') AS ServerCollation;

如果返回结果为 Polish_CI_AS 则说明修改成功。

注意事项
  • 所有修改操作前请务必完整备份所有数据库数据,避免操作异常导致数据丢失
  • 服务器排序规则修改后,已创建的用户数据库、表字段的排序规则不会自动同步变更,如需统一规则需要单独执行对应修改语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:45:06