本文详细介绍在mac无法安装SSMS的情况下使用sql server与安装过程中出现的情况
背景
学校数据库要用sql server,无奈mac无法安装。
解决方法有:
- window虚拟机 (臃肿
- 云数据库 (贵
- 云服务器安装sql server (未必人人都有且贵
- 虚拟机安装sql server,然后通过
navicat premium
或者其他数据库管理软件连接上
最终选择了第四种(我的服务器装着古老的Windows server 2012),且第四种可复现程度较大。
本次试验平台&软件
Ubuntu 18.04 (需要2g空闲内存,可改)
macOS 10.15.7
navicat premium
SQL Server 2019
一、安装 SQL Server
根据官网安装方法最佳: https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu
安装步骤:
- 导入公共存储库 GPG 密钥:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- 为 SQL Server 2019 注册 Microsoft SQL Server Ubuntu 存储库:
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
- 运行以下命令以安装 SQL Server:
sudo apt-get update
sudo apt-get install -y mssql-server
- 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本
SA:system administrator,系统管理员,具有最高权限
可能会出现内存不足报错与权限问题,看后面
sudo /opt/mssql/bin/mssql-conf setup
选择 SQL Server 的一个版本:
1) Evaluation (免费,无生产许可,180 天限制)
2) Developer (免费,无生产许可)
3) Express (免费)
4) Web (付费版)
5) Standard (付费版)
6) Enterprise (付费版) - CPU 核心利用率限制为 20 个物理/40 个超线程
7) Enterprise Core (付费版) - CPU 核心利用率达到操作系统最大值
8) 我通过零售渠道购买了许可证并具有要输入的产品密钥。
此处按需选择,一般选择 2
选择 SQL Server 的语言:
(1) English
(2) Deutsch
(3) Español
(4) Français
(5) Italiano
(6) 日本語
(7) 한국어
(8) Português
(9) Русский
(10) 中文 – 简体
(11) 中文 (繁体)
输入选项 1-11:10
输入 SQL Server 系统管理员密码:
确认 SQL Server 系统管理员密码:
正在配置 SQL Server...
此处按需
注意:密码要大写字母、小写字母、数字、字符四选三
- 完成配置后,验证服务是否正在运行:
systemctl status mssql-server --no-pager
active (running) : 运行中
- 如果计划远程连接,可能还需要在防火墙上打开 SQL Server TCP 端口(默认值为 1433)
Ubuntu防火墙默认关闭,ufw status可以查看。
tips:防火墙关闭也可以连接
sudo ufw allow 1433/tcp
sudo ufw reload
具体参考:如何在Ubuntu 18.04上使用UFW设置防火墙
安装完成,此时你已经可以通过软件连接了,但是你可能会出现以下问题。
常见报错
- 内存不足
安装SQL Server要求要2g空闲内存,作为试验品必然不分配太多,直接改
cd /opt/mssql/bin/ # 进入目录
mv sqlservr sqlservr.old # 保存备份文件
python # 使用python修改内存限制代码
>>>oldfile = open("sqlservr.old", "rb").read()
>>>newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")
>>>open("sqlservr", "wb").write(newfile)
>>>exit()
注意
- 要用python2
- 若出现文件权限问题,请使用
sudo python
进去python2
修改后,内存限制被缩小为 512 MB,回到~正常安装即可。
回到~,再次执行上面第四步
建议先执行 sudo chmod 777 sqlservr 防止出现下一个报错
- sqlservr: 权限不够
经过上面执行,安装时可能会出现sqlservr文件权限不够问题
bash: /opt/mssql/bin/sqlservr: 权限不够
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /lib/systemd/system/mssql-server.service.
安装程序已成功完成。SQL Server 正在启动。
通过修改文件权限解决
cd /opt/mssql/bin
sudo chmod 777 sqlservr
回到~,再次执行上面第四步
二、在Mac连接数据库
此时已经可以通过软件连接到虚拟机里的SQL Server

三、安装SQL Server命令行工具
仍是建议看官方文档:https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15
- 导入公共存储库 GPG 密钥
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- 注册 Microsoft Ubuntu 存储库
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
- 更新源列表,并使用 unixODBC 开发人员包运行安装命令
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
- 可选:向 bash shell 中的 PATH 环境变量添加
/opt/mssql-tools/bin/
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
四、本地测试
以下步骤使用 sqlcmd 本地连接到新的 SQL Server 实例
命令行连接
sqlcmd -S localhost -U SA -P '<YourPassword>'
-S:名称
-U:用户名,此时用SA
-P:密码,上面设置的密码,替换-P后面的文本
新建数据库
一行一行输入
CREATE DATABASE TestDB
SELECT Name from sys.Databases
GO
Tips:前两个命令没有立即执行。 必须在新行中键入 GO
才能执行以前的命令
执行结果:
os@os-virtual-machine:~$ sqlcmd -S localhost -U SA -P SQL_server
1> CREATE DATABASE TestDB
2> SELECT Name from sys.Databases
3> GO
Name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
TestDB

插入数据
USE TestDB
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
GO
执行结果:
1> USE TestDB
2> CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
3> INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
4> GO
Changed database context to 'TestDB'.
(1 rows affected)
(1 rows affected)
选择数据
SELECT * FROM Inventory WHERE quantity > 152;
GO
执行结果:
1> SELECT * FROM Inventory WHERE quantity > 152;
2> GO
id name quantity
----------- -------------------------------------------------- -----------
2 orange 154
(1 rows affected)
退出sqlcmd
QUIT
参考文章:
- 快速入门:安装 SQL Server 并在 Ubuntu 上创建数据库 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15
- Linux安装SQL Server 2017(安装篇SQL Server on linux): https://blog.csdn.net/sqlserverdiscovery/article/details/79193959
- 破解2G限制:https://www.cnblogs.com/biaogejiushibiao/p/9280841.html
- Linux 下安装sql server 时 2G内存限制的最新(2019-08-15) 解决方案: https://blog.csdn.net/weixin_30451709/article/details/99934495