centos7.x中安装SQL Server 内存低于2G时的解决方案
下载微软官方的sqlserver源到本地
代码语言:javascript复制wget -O /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo安装mssql-server(SQL Server软件包)
代码语言:javascript复制yum install -y mssql-server接下来就是要指定安装哪一个版本了,但是如果机器空闲内存低于2G的话,请继续按照以下步骤,否则,直接进行第三部分
破解内存限制
首先切换到 /opt/mssql/bin 目录下
代码语言:javascript复制cd /opt/mssql/bin/然后保存备份文件
代码语言:javascript复制mv sqlservr sqlservr.old使用python修改二进制文件,把里面的2G内存限制改为512M
代码语言:javascript复制python 代码语言:javascript复制oldfile = open("sqlservr.old", "rb").read()
newfile = oldfile.replace("x00x94x35x77", "x00x80x84x1e")
open("sqlservr", "wb").write(newfile)
exit()选择想要安装的sql server版本,以及设置SA用户密码
代码语言:javascript复制/opt/mssql/bin/mssql-conf setup
输入数字,选择所要安装的版本,然后在出现询问是否接受许可条款时,输入yes,回车继续下一步。

到了这一步的时候,输入SA用户密码(密码长度八位以上,且密码必须包含数字、字母和特殊字符),注意在输入密码的时候,窗口上是不显示任何字符的,所以输入完之后,直接回车,然后再输入一遍,回车确认。
运行命令,检查SQL server状态(运行是否有问题)
代码语言:javascript复制systemctl status mssql-server如果出现了如下图这种错误:

在启动SQL server引擎的时候出现了错误。
关于这个的解决方案就是,我们需要设置一下 /opt/mssql/bin/sqlservr 目录的权限,让SQL server可以访问
代码语言:javascript复制cd /opt/mssql/bin/代码语言:javascript复制chmod 777 sqlservr这次权限分配完成,接着重新输入命令,再次安装
代码语言:javascript复制/opt/mssql/bin/mssql-conf setup安装完成之后,再次检查SQL server的状态
代码语言:javascript复制systemctl status mssql-server出现如下图界面,则表示已安装成功

设置防火墙,开启远程连接
代码语言:javascript复制firewall-cmd --zone=public --add-port=1433/tcp --permanent代码语言:javascript复制firewall-cmd --reload如果执行上述命令的时候,出现这种错误

则表示防火墙未开启,这种情况可以跳过防火墙设置,直接进行下一步
安装sqlserver命令行工具
下载微软官方的软件包yum源
代码语言:javascript复制wget -O /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo如果以前装过mssql,则需要删除较旧的UnixODBC软件包
代码语言:javascript复制yum remove unixODBC-utf16 unixODBC-utf16-devel 安装mssql工具包和UnixODBC开发人员软件包(这一步命令会出现两次询问:是否接受许可条款,都输入yes,回车确定)
代码语言:javascript复制yum install -y mssql-tools unixODBC-devel 添加PATH环境变量
代码语言:javascript复制echo "export PATH=$PATH:/opt/mssql-tools/bin" >> /etc/profile代码语言:javascript复制source /etc/profile使用sqlcmd命令连接本地的sqlserver,输入之前设置的SA密码
代码语言:javascript复制sqlcmd -S localhost -U SA -p
出现这个界面,表示登录成功,然后我们可以开始写SQL命令。
首先我们先执行一句SQL语句,创建一个测试数据库,检测是否有效。
代码语言:javascript复制CREATE DATABASE [Test]代码语言:javascript复制GO
SELECT [Name] FROM SYS.DATABASES代码语言:javascript复制GO
打开本地windows端的SSMS,远程连接CentOS中的SQL Server




