SQLServerをCentOSにインストールする

Linux Tips

次期 SQL Server のパブリックプレビュー版を CentOS にインストールする手順

はじめに

Microsoft の次期 SQL Server のパブリックプレビュー版が公開されたので導入した手順に関して書きます。

次期 SQL Server に関しては Linux 対応に関して以前から発表されていましたが、上記パブリックプレビュー版でもWindows版等と共にLinux版が同時公開されました。
今回はこれを利用した手順になります。

Microsoft ❤️ Linux? Microsoft ❤️ running its Windows' SQL Server software on Linux によると、Linux 版 SQL Server は Linux ネイティブアプリケーションではなく、Drawbridge ( MSが開発した仮想化技術 ) を利用しているらしい。

環境

Microsot のサイトでは対応するLinuxとして以下があげられています。

  • Red Hat Enterprise Linux 7.2
  • Ubuntu Linux 16.04
  • SUSE Linux Enterprise Server v12 SP2 (今後対応予定)

が、今回以下環境でインストールしてみました。

OS CentOS 7.2

上記OSのKVMゲストを用意しインストールを行いました。

システム要件

メモリ3250MB以上
必要メモリに満たない場合、インストールが中断します。
ただし、KVMゲストのメモリ=3250MBに設定した状態でもエラーになったので、最終的には4GBで設定してインストール。

SQL Server インストール手順

インストール手順に関しては SQL Server v.Next—SQL Server on Linux | Microsoft の記載に従えば OK です。

上記リンク先に移動し、[ Download now ] ボタンをクリックすると、各ディストリビューション毎の導入手順がリンクされたページに移動します。
インストール対象に応じたリンクをクリックして、書いてある手順に従いましょう。

今回はCentOS上にインストールするため、Red Hat Enterprise Linux の手順 に従いました。

( 上記手順では 一般ユーザでログイン後 su していますが、以下手順ではこれら切り替え作業は省いた手順を記載しています )

yum リポジトリの追加

# curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo

インストール

# yum install mssql-server

関連ライブラリも併せてインストールされます。

インストールスクリプトの実行

# /opt/mssql/bin/sqlservr-setup

インストールスクリプトを実行すると、以下入力を求められるので応答します。

Do you accept the license terms? If so, please type "YES":

ライセンスに同意するなら YES を入力します。

Please enter a password for the system administrator (SA) account:

管理者(SA)アカウントのパスワードを入力します。

※パスワードポリシーを満たす必要があります ( 8文字以上、大文字・小文字・数字の混在 )。要件を満たさない場合、再入力を求められます。

Please confirm the password for the system administrator (SA) account:

ポリシーを満たしていれば、確認入力を求められます。先に入力したのと同じパスワードを入力します。

※システム要件を満たしていないと、確認入力後にスクリプトが終了する。
最初メモリが足りてなくて以下エラーで終了した。
sqlservr: This program requires a machine with at least 3250 megabytes of memory.


Do you wish to start the SQL Server service now? [y/n]:

インストール後サービスを起動する場合 y を入力します。

Do you wish to enable SQL Server to start on boot? [y/n]: y

OS起動時に SQL Server サービスを起動する場合 y を入力します。

インストールが行われ、最後に以下が出力されればインストールは完了です。

Setup completed successfully.

状態確認

SQL Server サービスの状態確認は以下で行えます。

# systemctl status mssql-server
mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
   Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled)
   Active: active (running) since 金 2016-11-18 17:54:35 JST; 1min 11s ago
 Main PID: 2409 (sqlservr)
   CGroup: /system.slice/mssql-server.service
           ├─2409 /opt/mssql/bin/sqlservr
           └─2414 /opt/mssql/bin/sqlservr

11月 18 17:54:38 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:38.3...
11月 18 17:54:38 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:38.9...
11月 18 17:54:39 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:39.1...
11月 18 17:54:39 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:39.1...
11月 18 17:54:39 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:39.1...
11月 18 17:54:39 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:39.2...
11月 18 17:54:39 localhost.localdomain sqlservr[2409]: 2016-11-18 08:54:39.2...
11月 18 17:54:43 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/...
11月 18 17:54:43 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/...
11月 18 17:54:43 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/...
Hint: Some lines were ellipsized, use -l to show in full.

ファイアウォール設定

firewalld の設定を行います。TCPの1433ポートを開放します。

# firewall-cmd --zone=public --add-port=1433/tcp --permanent
# firewall-cmd --reload

mssql ツールのインストール

yum リポジトリの追加

SQL Server とは別リポジトリになります。

# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo

インストール

# yum install mssql-tools

yum でのインストール中に以下入力を求められるので応答します。

The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746838 and found in
/usr/share/doc/msodbcsql/LICENSE.TXT . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)

ODBC DRIVER のライセンスに同意するなら YES を入力します。

The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746949 and found in
/usr/share/doc/mssql-tools/LICENSE.txt . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)

mssql ツールのライセンスに同意するなら YES を入力します。

ツールの利用

上でインストールした mssql-tools を利用して SQL Server に対する操作が行えます。

SQLサーバへの接続

$ sqlcmd -S localhost -U SA -P 'パスワード'

ローカルの SQL Server に 管理者(SA)アカウントで接続します。
-P 以降を省略した場合、コマンド実行後にパスワード入力を求められます。

# sqlcmd -S localhost -U SA
Password:
1>

パスワードが正しければ SQL Server のプロンプト "数字>" が表示されます。

データベースの作成

1> create database データベース名
2> go

データベースの利用

1> use データベース名
2> go

テーブル作成

1> CREATE TABLE inventory (
2> id INT,
3> name NVARCHAR(50),
4> quantity INT
5> );
6> go

データインサート

1> INSERT INTO inventory VALUES (1, 'banana', 150);
2> INSERT INTO inventory VALUES (2, 'orange', 154);
3> go

(1 rows affected)

(1 rows affected)

データ表示

1> select * from inventory;
2> go
id          name                                               quantity
----------- -------------------------------------------------- -----------
          1 banana                                                     150
          2 orange                                                     154

(2 rows affected)

その他ツールでの接続

SQL Server 管理ツール

Windos ホストにインストールされた SQL Server Management Studio から接続して、各種操作を行う事が可能です。
以下の設定で接続できると思います。

サーバ名SQL Server をインストールした Linux の IPアドレス、または、ホスト名
認証SQL Server 認証
ログインsa
パスワードインストール時に設定したパスワード

JDBC

直近 Javaでの開発を行っていたので、Eclipse からJDBC経由で接続してみましたが、問題なく接続できました。

※DB操作用のプラグインとして DBeaver を利用しているのですが、プラグインからの操作も問題ありませんでした。

※詳細な検証は行えていませんが、Windows上のSQL Server と同様に操作が行えています。

まとめ

Linux 版 SQL Server では Windowsの機能をすべて提供する予定はないとの事ですが、基本的な機能に関しては問題なく利用できそうです。

Microsoft の戦略としては ( 特に azure 以外の ) クラウドプラットフォームでのシェア拡大を目指すものかと思います。

 

個人的には SQL Server を使いたいといった要求は今のところあまりありませんが、先日正式版がリリースされた .NET Core、ASP.NET Core と併せて、MS系アプリ + MS系DB という .NET 開発において利用される事が多い組み合わせが 単体のLinuxサーバで動作する環境が整ったと言えるのかもしれません。

AWS(EC2) 等 Windows / Linux 双方利用できる環境でも、Windows のランニングコストはLinuxに比べて高い場合が多いので、コスト削減手段の一つとして Linux + SQL Server といった組み合わせが今後増える可能性はありそうです。