私の会社では、クライアントとサーバーの 2 つの側面を持つソフトウェアを開発しています。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 のライセンスに依存していることを訂正していただけると幸いです。さらに、SQL Server はリソースを大量に消費するため、通常、組織は SQL Server を独自のクラスターまたはサーバーで他のアプリケーションと一緒に実行しないように分離しようとします。
私が疑問に思うことの 1 つは、なぜバックエンドとして Sybase を試さないのかということです。Linux から SQL Server および Sybase への接続は を経由することができFreeTDS
、これはクライアント ソフトウェアと同一のように見えます。
答え2
警告:抱擁 - 拡張 - ドロップ ?
はい、2016年11月末現在、ドキュメント、Ubuntu 16.04 に sql-server vNext CTP1 のパブリック プレビューをインストールできます (OpenSSL パッケージが古いため 14.04 では動作しません。また、OpenSSL パッケージが新しすぎるため 19.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 の起動を無効にするには:
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-Password が 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