我之前一篇文章介绍了如何修改自己创建的数据库的排序规则
但由于自己写的存储过程里面有涉及到临时表的创建问题
由于临时表全部都是创建在tempdb这个数据库中的
导致运行时依然会遇到加载中文字符出现乱码和?的问题
故这篇文章介绍如何修改 master、tempdb等数据库修改排序规则的问题
Linux下:
首先我们
systemctl stop mssql-server
停掉Linux上的MSSQL服务
然后检查下服务器上的数据库里有没有自己创建的数据库

若有自己创建的库,先备份,再删除掉(或者分离,如果不删除掉的话,修改的时候会报错)

服务器端
/opt/mssql/bin
这个目录下有个mssq-conf这个文件,先进目录
cd /opt/mssql/bin

进去后再使用
./mssql-conf set-collation
他需要我们输入参数,即修改后的排序规则
这里我输入Chinese_PRC_BIN 也就是二进制

然后回车,开始修改规则(如果你这步报错了,先检查下是不是自己创建的数据库没有删除,再检查下 MSSQL 服务是不是没有 stop)

修改成功,我们还原数据库


还原好即可
我们来看下修改后的系统数据库的排序规则
select name,collation_name from sys.databases

已成功修改
如果你是Window下的话,建议卸载重装,安装的时候在选择排序规则那一步记得勾选好(血的教训)即可
希望可以解决你的问题!
本文介绍了如何在Linux环境下修改MSSQL的master和tempdb数据库的排序规则,以解决临时表中文乱码的问题。首先停止MSSQL服务,然后使用mssql-conf工具设置新的排序规则,如Chinese_PRC_BIN。接着还原数据库,通过查询sys.databases验证排序规则已成功修改。Windows环境下建议卸载重装并在安装时选择正确的排序规则。
&spm=1001.2101.3001.5002&articleId=121180201&d=1&t=3&u=74d550aa692a4f6999125e03d8ee4fc0)
1万+

被折叠的 条评论
为什么被折叠?



