微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ❤️ Linux 打得一众软粉措手不及。可是这仍是好事情,Linux 上也有好用的 SQL Server 啦,可是从预览版开始 SQL Server on Linux 的配置要求蜜汁高,大部分云主机用户都望而却步。另外,SQL Server on Linux 对于文件系统有限制,仅支持 Ext3 以及 XFS 文件格式系统,对于某些云服务商默认提供的云镜像限制 Ext3 文件格式系统的用户而言也是足够让人懊恼。html
本文以 CentOS 为例,若是使用的是 Ubuntu,或者 SUSE 可能在步骤上会有所不一样。总的来讲,建议使用 Docker 部署的方式进行部署。linux
https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-red-hatweb
微软的官方指南,按照这个流程走便可。sql
虽然网上有文告诉如何破解预览版 3.25G 内存限制的文章,可是很皮的是,微软在 Update 4 后把内存限制改为了 2G,也就是,即便你按照指南操做,安装时空闲内存不足 2000M 同样会获得报错消息:数据库
sqlservr: This program requires a machine with at least 2000 megabytes of memory.
有时候咱们会想,我就跑个 Express,没钱买 Enterprise 或者 Web,Express 也就只能用 1G RAM,要那么多来干什么… 其实参考文章仍是有效,可是须要修改的这个常量而不是 3250000000 而是 2000000000。使用 Python:ui
>>> oldfile = open("sqlservr.bak", "rb").read() >>> newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e") >>> open("sqlservr", "wb").write(newfile)
修改后,内存限制被缩小为 512 兆字节。操作系统
可是须要注意的是,SQL Server Express 版本依然须要 650M 内存。因此若是你的机器只有 1G 或者更低,仍是够呛。务必使用 1.5G RAM。日志
微软在发行注记上说,仅支持 XFS 或者 Ext4 文件格式系统。如今部分云服务商为了确保兼容性依然针对系统盘采用了 Ext3 文件格式系统(结果形成了 SQL Server 不兼容),其实稍不注意忽略这一点能够坑一成天,而且永远都是蜜汁报错,而后本身还浑然不觉。
破解这个限制其实只须要把 SQL Server 的数据文件放到 Ext4 文件格式系统的挂载目录下便可。挂载上 Ext4 格式磁盘(假设目录为 /data/
),而后新建一个文件目录(此处为 /data/sqlsrv_data/
,日志目录为 /data/sqlsrv_data/log/
)。
设置权限:code
sudo chown -R mssql /data/sqlsrv_data/ sudo chown -R :mssql /data/sqlsrv_data/
若是忽略这一步,后续安装将会失败,而且没有日志文件产生。或者收到报错信息:server
ERROR: BootstrapSystemDataDirectories() failure (HRESULT 0x80070002) Initial setup of Microsoft SQL Server failed. Please consult the ERRORLOG
而后设置环境变量信息:
export MSSQL_MASTER_DATA_FILE=/data/sqlsrv_data/master.mdf export MSSQL_MASTER_LOG_FILE=/data/sqlsrv_data/mastlog.ldf export MSSQL_ERROR_LOG_FILE=/data/sqlsrv_data/log/errorlog
注意,上述环境变量为文件位置而不是目录,填写目录将会安装失败。
而后在 /opt/mssql/bin/
目录下执行:
./mssql-conf set filelocation.masterdatafile /data/sqlsrv_data/master.mdf ./mssql-conf set filelocation.masterlogfile /data/sqlsrv_data/mastlog.ldf ./mssql-conf set filelocation.errorlogfile /data/sqlsrv_data/log/errorlog
而后执行
./mssql-conf setup
片刻,执行
systemctl status mssql-server
检查服务状态,若是没看到 systemd[1]: Failed to start Microsoft SQL Server Database Engine.
这类死亡警告,那么恭喜阁下安装成功,使用 Microsoft SQL Server Management Studio 开始愉快的 Linux × SQL Server 的 CP 体验吧。
若是按照操做你都失败了,尤为是看到
FCB::Open failed: 没法打开文件号 1 的文件 d:\dbs\sh\s17o\0209_182031\cmd\16\obj\x64retail\sql\mkmastr\databases\mkmastr.proj\MSDBData.mdf。操做系统错误: 2(系统找不到指定的文件。)。
报错的话…
没错,是由于所给的目录不正确或者上次安装失败的数据库还在。解决方案是清空文件目录(若是删除了,别忘了设置权限,否则文件访问不了)。