我公司開發的軟體有兩個面向:客戶端和伺服器。我已經在 Windows 上安裝了 Microsoft SQL Server,並在 Ubuntu 上運行客戶端並進行了一些配置。
但我想知道:有沒有辦法運行 Ubuntu 作為伺服器並在其上安裝 SQL Server?
答案1
你當然可以嘗試我下面概述的方法,但我不知道是否有人嘗試過成功。
- 在 Ubuntu 電腦上安裝虛擬化軟體(VMWare、Xen、VirtualBox)。
- 在虛擬機器中安裝 Microsoft Windows Server。
- 在新安裝的 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
為紅帽(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