CentOS安装mssql

根据微软文档安装mssql

https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-server-ver15

破解内存限制

在配置过程中会提示错误信息

sqlservr: This program requires a machine with at least 2000 megabytes of memory.

此时需要按以下方法修改内存限制

  1. cd /opt/mssql/bin/ # 进入目录
  2. mv sqlservr sqlservr.old # 保存备份文件
  3. python # 使用python修改内存限制代码
  1. oldfile = open("sqlservr.old", "rb").read()
  2. newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")
  3. open("sqlservr", "wb").write(newfile)
  4. exit()

权限问题

运行 systemctl status mssql-server 查看服务状态时提示错误信息 Failed to start Microsoft SQL Server Database Engine.

1、查看错误原因

  1. journalctl -fp err

提示权限错误

  1. Failed at step EXEC spawning /opt/mssql/bin/sqlservr: Permission denied
  2. Failed at step EXEC spawning /opt/mssql/bin/sqlservr: Permission denied
  3. Failed to start Microsoft SQL Server Database Engine.

2、修改目录权限

  1. chmod -v 777 /opt/mssql/bin/sqlservr

3、重新启动mssql服务

  1. systemctl restart mssql-server

中文乱码

修改SQL Server数据库排序规则

  1. -- 查看排列规则
  2. SELECT DATABASEPROPERTYEX('wgmesdata2020', 'Collation') SQLCollation;
  3. -- 修改排列规则
  4. Alter Database wgmesdata2020 collate Chinese_PRC_CI_AS;

修改排序规则能解决80%以上的乱码问题,如果修改后没有解决,检查服务器操作系统语言及字段类型。

几个应当特别留意的字段类型

正常来讲,char、varchar、text也可以存储中文字符,但是当遇上英文操作系统并且对中文字体的支持不全面的时候,在以上三个格式中存储中文字符就可能出现乱码。这时候建议修改中文存储字段的数据类型。

  • varchar
    修改varchar为nvarchar

  • char
    修改char为nchar

  • text
    修改text为ntext