我可以在Ubuntu上运行SQL Server吗?
我公司开发的软件有两个方面:客户端和服务器。 我在Windows上安装了Microsoft SQL Server,并在Ubuntu上运行客户端并进行了一些配置。
但我想知道:有没有办法将Ubuntu作为服务器运行并在其上安装SQL Server?
您当然可以尝试我将在下面概述的方法,但我不知道是否有人成功尝试过。
- 在Ubuntu计算机上安装虚拟化软件(VMWare,Xen,VirtualBox)。
- 在虚拟机中安装Microsoft Windows Server。
- 在新安装的Windows Server上安装MS SQL Server。
我不知道是否有任何其他方式可行,但人们可以从我记得的MS SQL Server中纠正我实际上依赖于Microsoft Windows Server的许可。 除此之外,SQLServer是一个非常糟糕的资源占用,因此通常组织会尝试将其与运行在其自己的集群或服务器上的任何其他应用程序隔离开来。
我要问的一件事是为什么不尝试使用Sybase作为后端? 从Linux到SQLServer和Sybase的连接可以通过FreeTDS
,它看起来与您的客户端软件完全相同。
警告: EMBRACE – EXTEND – DROP ?
是的,根据2016年11月底,并且根据docs.microsoft.com ,您可以在Ubuntu 16.04上安装sql-server vNext CTP1的公共预览(由于OpenSSL包过时,因此无法在14.04上运行):
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list sudo apt-get update sudo apt-get install -y mssql-server sudo /opt/mssql/bin/sqlservr-setup
或者更新
sudo /opt/mssql/bin/mssql-conf setup
要删除它
sudo apt-get remove --purge mssql-server
删除生成的数据库
sudo rm -rf /var/opt/mssql/
如果要检查它是否有效,请不要忘记关闭防火墙
iptables -F iptables -P INPUT ACCEPT
您可以使用以下命令启动SQL-Server:
systemctl start mssql-server
您可以使用以下命令停止SQL Server:
systemctl stop mssql-server
要查看其状态:
systemctl status mssql-server
要在启动时启动sql-server:
systemctl enable mssql-server
要在启动时禁用SQL-Server-start:
systemctl disable mssql-server
如果你也想要命令行工具
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo apt-get install mssql-tools
测试它
sqlcmd -S localhost -U SA -P 'YourPasswordHere' CREATE DATABASE contoso exit
并永久打开端口1433(sql-server default-port)
iptables -A INPUT -p tcp --dport 1433 -j ACCEPT sudo apt-get install iptables-persistent sudo netfilter-persistent save sudo netfilter-persistent reload
或者如果你使用ufw,你可以通过输入less来做同样的事情
ufw allow 1433/tcp
另请参阅防火墙持久性和此
对于Red Hat(firewalld):
firewall-cmd --add-port=1433/tcp --permanent firewall-cmd --reload
如果您不想使用命令行工具,则可以从Windows笔记本电脑连接SSMS。