警告:拥抱 - 延伸 - 放下  ?

警告:拥抱 - 延伸 - 放下  ?

我的公司开发软件有两个方面:客户端和服务器。我在 Windows 上安装了 Microsoft SQL Server,并在 Ubuntu 上运行客户端并进行了一些配置。

但我想知道:有没有办法运行 Ubuntu 作为服务器并在其上安装 SQL Server?

答案1

您当然可以尝试我下面概述的方法,但我不知道是否有人成功尝试过。

  1. 在您的 Ubuntu 机器上安装虚拟化软件(VMWare、Xen、VirtualBox)。
  2. 在虚拟机中安装 Microsoft Windows Server。
  3. 在新安装的 Windows Server 上安装 MS SQL Server。

我不知道是否有其他方法可行,但大家可以纠正我,据我所知,MS SQL Server 实际上依赖于 Microsoft Windows Server 的许可。除此之外,SQLServer 非常耗资源,因此组织通常会尝试将其与自己的集群或服务器上的任何其他应用程序隔离开来。

我想问的一件事是为什么不尝试使用 Sybase 作为后端?从 Linux 到 SQLServer 和 Sybase 的连接可以通过FreeTDS,这看起来与您的客户端软件完全相同。

答案2

警告:拥抱 - 延伸 - 放下  ?

是的,截至 2016 年 11 月底,并且截至docs.microsoft.com,你可以在 Ubuntu 16.04 上安装 sql-server vNext CTP1 的公共预览版(在 14.04 上不起作用,因为 OpenSSL 包已过时,在 19.04 上不起作用,因为 OpenSSL 包太新):

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默认端口)

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。

安全管理系统


如果您无法在您的发行版上使用 sql-server(openssl 太旧/openssl 太新/发行版不受支持),那么您可以随时使用 docker 镜像:

sudo apt-get install docker.io 
docker pull mcr.microsoft.com/mssql/server:2017-latest

docker run -d -p 2017:1433 --name mssql_2017 -e MSSQL_SA_PASSWORD =TOP_SECRET -e ACCEPT_EULA=Y  -e MSSQL_PID="Developer" -v /var/opt/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest

安装 docker,从互联网上获取最新的 SQL-Server-2017 docker-linux-image,将容器中的端口 1433 映射到主机中的端口 2017,并将许可证设置为“Developer”,将 sa 密码设置为 TOP_SECRET,还将容器上的 /var/opt/mssql 映射到主机上的 /var/opt/mssql。您可能必须使用 创建该文件夹mkdir -p /var/opt/mssql

从此以后,您可以使用 启动容器docker start mssql_2017并使用 停止容器docker stop mssql_2017

要在 Linux 上以图形方式使用 SQL Server,您可以使用Azure数据工作室,下载deb 软件包从其 github 页面,并使用sudo dpkg -i azuredatastudio-linux-1.12.2.deb

相关内容