SQL Server 2017 を CentOS 7.4 で試す

## SQL Server on Linux
2016年3月に SQL Server on Linux が発表[^linux]され、現在 Linux 版を含む SQL Server 2017 RC2 が公開されています。
手軽に開発や検証等で利用したい場合などに大変助かるので、現時点の CentOS 上での利用手順を検証しました。

## 検証環境
* CentOS 7.4.1708 (minimal)

## インストール

### メモリの確認
```bash
free -m
```
```
              total        used        free      shared  buff/cache   available
Mem:           3790         131        3449           8         209        3423
Swap:          2047           0        2047
```

3.25GB 以上のメモリが必要です。
VirtualBox の仮想マシンを作成する際にメモリを 4GB (4096MB) 割り当てるとインストールできました。

```text
sqlservr: This program requires a machine with at least 3250 megabytes of memory.
```
メモリ不足しているとセットアッププログラムを実行中に上記のようなエラーが出力されて終了します。

### axelget
```bash
yum -y install epel-release && yum -y update && yum -y install yum-axelget
```
`mssql-server` パッケージが 165MB あり、残念なことに通信が遅い場合があるので、感謝の念を込めながら事前に Yum プラグインの `yum-axelget` をインストールしておきます。

### SQL Server
```bash
yum -y install yum-utils && \
yum-config-manager --add-repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo && \
sed -i 's/packages-microsoft-com-//' /etc/yum.repos.d/mssql-server-2017.repo && \
yum install -y mssql-server && \
ACCEPT_EULA=Y \
MSSQL_SA_PASSWORD='P@ssw0rd' \
MSSQL_PID=Developer \
MSSQL_LCID=1041 \
/opt/mssql/bin/mssql-conf -n setup
```

#### リポジトリの追加
公式でも `curl` で repo ファイルを手動ダウンロードしていますが、お行儀よく `yum-config-manager` コマンドの `--add-repo` オプションでリポジトリを追加します。
`yum-config-manager` コマンドは `yum-utils` パッケージに含まれています。

#### mssql-server パッケージ
依存関係で `bzip2` `gdb` `libsss_nss_idmap` の各パッケージもインストールされました。

`mssql-server` パッケージでインストールされるファイルは以下の通りです。

```
/opt/mssql/bin
/opt/mssql/bin/compress-dump.sh
/opt/mssql/bin/crash-support-functions.sh
/opt/mssql/bin/generate-sql-dump.sh
/opt/mssql/bin/handle-crash.sh
/opt/mssql/bin/mssql-conf
/opt/mssql/bin/paldumper
/opt/mssql/bin/sqlservr
/opt/mssql/lib
/opt/mssql/lib/libc++.so.1
/opt/mssql/lib/libc++abi.so.1
/opt/mssql/lib/libjemalloc.so.1
/opt/mssql/lib/libsqlvdi.so
/opt/mssql/lib/libunwind.so.8
/opt/mssql/lib/loc
/opt/mssql/lib/loc/de_DE
/opt/mssql/lib/loc/de_DE/LC_MESSAGES
/opt/mssql/lib/loc/de_DE/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/en_US
/opt/mssql/lib/loc/en_US/LC_MESSAGES
/opt/mssql/lib/loc/en_US/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/es_ES
/opt/mssql/lib/loc/es_ES/LC_MESSAGES
/opt/mssql/lib/loc/es_ES/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/fr_FR
/opt/mssql/lib/loc/fr_FR/LC_MESSAGES
/opt/mssql/lib/loc/fr_FR/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/it_IT
/opt/mssql/lib/loc/it_IT/LC_MESSAGES
/opt/mssql/lib/loc/it_IT/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/ja_JP
/opt/mssql/lib/loc/ja_JP/LC_MESSAGES
/opt/mssql/lib/loc/ja_JP/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/ko_KR
/opt/mssql/lib/loc/ko_KR/LC_MESSAGES
/opt/mssql/lib/loc/ko_KR/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/pt_BR
/opt/mssql/lib/loc/pt_BR/LC_MESSAGES
/opt/mssql/lib/loc/pt_BR/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/ru_RU
/opt/mssql/lib/loc/ru_RU/LC_MESSAGES
/opt/mssql/lib/loc/ru_RU/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/zh_CN
/opt/mssql/lib/loc/zh_CN/LC_MESSAGES
/opt/mssql/lib/loc/zh_CN/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/zh_TW
/opt/mssql/lib/loc/zh_TW/LC_MESSAGES
/opt/mssql/lib/loc/zh_TW/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/mssql-conf
/opt/mssql/lib/mssql-conf/checkinstall.sh
/opt/mssql/lib/mssql-conf/checkrunninginstance.sh
/opt/mssql/lib/mssql-conf/collations.txt
/opt/mssql/lib/mssql-conf/invokesqlservr.sh
/opt/mssql/lib/mssql-conf/loc
/opt/mssql/lib/mssql-conf/loc/mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-de_DE.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-en_US.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-es_ES.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-fr_FR.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-it_IT.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-ja_JP.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-ko_KR.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-pt_BR.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-ru_RU.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-zh_CN.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-zh_TW.mo
/opt/mssql/lib/mssql-conf/mssql-conf.py
/opt/mssql/lib/mssql-conf/mssqlconfhelper.py
/opt/mssql/lib/mssql-conf/mssqlsettings.py
/opt/mssql/lib/mssql-conf/mssqlsettingsmanager.py
/opt/mssql/lib/mssql-conf/set-collation.sh
/opt/mssql/lib/secforwarderxplat.sfp
/opt/mssql/lib/sqldkxplat.sfp
/opt/mssql/lib/sqlservr.sfp
/opt/mssql/lib/system.certificates.sfp
/opt/mssql/lib/system.common.sfp
/opt/mssql/lib/system.netfx.sfp
/opt/mssql/lib/system.sfp
/usr/lib/systemd/system/mssql-server.service
/usr/share/doc/mssql-server/LICENSE.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Chinese_Simplified.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Chinese_Traditional.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_French.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_German.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Italian.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Japanese.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Korean.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Portuguese_Brazil.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Russian.TXT
/usr/share/doc/mssql-server/Linux_Prerelease_Spanish.TXT
/usr/share/doc/mssql-server/THIRDPARTYNOTICES.TXT
/usr/share/man/man1/mssql-conf.1.gz
/usr/share/man/man1/sqlservr.1.gz
```

`sqlservr-setup` コマンドは早々に廃止されたようです。

#### セットアップ
`mssql-conf` コマンドで `setup` オプションを指定するとセットアップを開始できます。環境変数を使用すると事前にダイアログで問われる内容を指定することができます。

特に言語に日本語を指定する事例が見つけにくいですが、`MSSQL_LCID` に `1041` を指定することで設定できます。これによりデフォルトの COLLATION が `Japanese_CI_AS ` になります。その他の指定可能な環境変数は「[環境変数と SQL Server の設定を構成する | Microsoft Docs](https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-configure-environment-variables)」で確認できます。

`-n` オプションでサイレントインストールになります。

未指定でセットアップを実行すると以下のような日本語化されたダイアログが表示されます。

```text
この製品のライセンス条項は
/usr/share/doc/mssql-server で参照できるほか、次の場所からダウンロードすることもできます:
https://go.microsoft.com/fwlink/?LinkId=852741&clcid=0x411

プライバシーに関する声明は、次の場所で確認できます:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x411

ライセンス条項に同意しますか? [Yes/No]:Yes

SQL Server のエディションを選択します:
  1) Evaluation (無料、製品使用権なし、期限 180 日間)
  2) Developer (無料、製品使用権なし)
  3) Express (無料)
  4) Web (有料)
  5) Standard (有料)
  6) Enterprise (有料)
  7) 小売販売チャネルを介してライセンスを購入し、入力するプロダクト キーを持っています。

エディションの詳細については、以下を参照してください
https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x411

このソフトウェアの有料エディションを使用するには、個別のライセンスを以下から取得する必要があります
Microsoft ボリューム ライセンス プログラム。
有料エディションを選択することは、
このソフトウェアをインストールおよび実行するための適切な数のライセンスがあることを確認していることになります。

エディションを入力してください(1-7): 2

SQL Server の言語の選択:
(1) English
(2) Deutsch
(3) Español
(4) Français
(5) Italiano
(6) 日本語
(7) 한국어
(8) Português
(9) Русский
(10) 中文 – 简体
(11) 中文 （繁体）
オプション 1-11 を入力: 6
SQL Server システム管理者パスワードを入力してください:
SQL Server システム管理者パスワードを確認入力してください:
SQL Server を構成しています...

This is an evaluation version.  There are [132] days left in the evaluation period.
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.
セットアップは正常に完了しました。SQL Server を起動しています。
```
`mssql-conf` コマンド実行完了後は SQL Server の起動および自動起動設定は完了しているようです。

#### ポート設定
```bash
cat << "_EOF_" > /etc/firewalld/services/mssql.xml && firewall-cmd --reload && \
firewall-cmd --add-service=mssql --permanent && firewall-cmd --reload
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SQL Server</short>
  <description>Microsoft SQL Server (Database Server)</description>
  <port protocol="tcp" port="1433"/>
</service>
_EOF_
```
公式では 1433 ポートを直接指定していますが、こちらもお行儀良くサービス `mssql` を追加します。

### mssql-tools (Tools for Microsoft&reg; SQL Server&reg;)
```bash
yum -y install https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm && \
ACCEPT_EULA=Y yum -y install mssql-tools && \
ln -sv /opt/mssql-tools/bin/* /usr/local/bin/
```

#### リポジトリの追加
なぜか prod の方はリポジトリが rpm パッケージで提供されているので、公式を無視してパッケージでリポジトリをインストールします。内容は repo ファイルを手動でダウンロードした場合と同じでした。

#### インストール
`mssql-tools` パッケージには、コマンドラインインターフェースの `sqlcmd` コマンドと、データのダンプ、インポートができる `bcp` コマンドが含まれています。

`-y` オプションを指定していてもダイアログで `Do you accept the license terms? (Enter YES or NO)` といったライセンスの同意を2回求められるので、`ACCEPT_EULA=Y` を指定することで回避します。

依存関係で `libtool-ltdl` `msodbcsql` `unixODBC` パッケージもインストールされます。

公式にはここで同時に `unixODBC-devel` パッケージをインストールしていますが、必須でない気がします。要調査。

#### パスの設定

公式の説明では `export PATH="$PATH:/opt/mssql-tools/bin"` を `.bash_profile` と `.bashrc` ファイルに追記しろと記載がありますが、色々とスマートではないので上記のように `/usr/local/bin` にシンボリックリンクを貼ります。
`/opt/mssql-tools/bin/` にあるファイルは `sqlcmd` と `bcp` コマンドの2つだけのようです。

## sqlcmd (SQL Server Command Line Tool)
`sqlcmd` コマンドはコマンドラインインターフェースで、 TRANSACT-SQL ステートメント、システム プロシージャ、およびスクリプト ファイルをコマンドプロンプトで入力できます。

### オプション
|オプション|説明|
|----|---|
|`-U`|ユーザー名を指定します。|
|`-P`|パスワードを指定します。|
|`-W`|`SELECT` した際の列から後続の空白を削除します。|
|`-S`|接続先の SQL Server のインスタンスを指定します。<br>[protocol:]server[\instance_name][,port]|

[sqlcmd ユーティリティ | Microsoft Docs](https://docs.microsoft.com/ja-jp/sql/tools/sqlcmd-utility)

### バージョン情報の確認
```sql
sqlcmd -U SA -P 'P@ssw0rd' -Q "SELECT @@VERSION" -W
```
```
-
Microsoft SQL Server 2017 (RC2) - 14.0.900.75 (X64)
	Jul 27 2017 08:53:49
	Copyright (C) 2017 Microsoft Corporation
	Developer Edition (64-bit) on Linux (CentOS Linux 7 (Core))

(1 rows affected)
```

### 環境変数 (sqlcmd スクリプト変数)
```bash
export SQLCMDSERVER=localhost
export SQLCMDUSER=SA
export SQLCMDPASSWORD=P@ssw0rd
```
環境変数でスクリプト変数を定義することで `sqlcmd` コマンドの `-S` や `-U` や `-P` のオプションを省略できるようになります。
変数の一覧は「[sqlcmd スクリプト変数](https://docs.microsoft.com/ja-jp/sql/tools/sqlcmd-utility#sqlcmd-scripting-variables)」を参照してください。

### データベースの一覧
```bash
sqlcmd -Q "SELECT Name, Collation_name FROM sys.Databases" -W
```
```
Name Collation_name
---- --------------
master Japanese_CI_AS
tempdb Japanese_CI_AS
model Japanese_CI_AS
msdb Japanese_CI_AS

(4 rows affected)
```
言語を日本語に指定してインストールすると `Japanese_CI_AS` になります。

```
Name Collation_name
---- --------------
master SQL_Latin1_General_CP1_CI_AS
tempdb SQL_Latin1_General_CP1_CI_AS
model SQL_Latin1_General_CP1_CI_AS
msdb SQL_Latin1_General_CP1_CI_AS

(4 rows affected)
```
言語を未指定または英語でインストールすると `SQL_Latin1_General_CP1_CI_AS` になります。

### 言語 ID の確認
```sql
sqlcmd -Q "SELECT * FROM sys.syslanguages WHERE alias = 'Japanese'" -W
```
```text
langid dateformat datefirst upgrade name alias months shortmonths days lcid msglangid
------ ---------- --------- ------- ---- ----- ------ ----------- ---- ---- ---------
3 ymd 7 0 日本語 Japanese 01,02,03,04,05,06,07,08,09,10,11,12 01,02,03,04,05,06,07,08,09,10,11,12 月曜日,火曜日,水曜日,木曜日,金曜日,土曜日,日曜日 1041 1041

(1 rows affected)
```
`sys.syslanguages` を参照すると、日本語の `langid` は `3` で、 `lcid` および `msglangid` が `1041` であることが確認できます。
[sys.syslanguages (Transact-SQL)](https://msdn.microsoft.com/ja-jp/library/ms190303(v=sql.100).aspx)

### デフォルト言語の確認
```sql
sqlcmd -Q "SELECT * FROM sys.configurations WHERE name LIKE 'default%language'" -W
```
```text
configuration_id name value minimum maximum value_in_use description is_dynamic is_advanced
---------------- ---- ----- ------- ------- ------------ ----------- ---------- -----------
124 default language 3 0 9999 3 default language 1 0
1126 default full-text language 1041 0 2147483647 1041 default full-text language 1 1

(2 rows affected)
```
言語を日本語でインストールすると `sys.configurations` の `default language` の `value` と `value_in_use` に日本語の `langid` の `3` が、また `default full-text language` には日本語の `lcid` または `msglangid` の `1041` が設定されます。

### ローカル接続
```bash
sqlcmd -U SA -P 'P@ssw0rd' -W
```

### 新しいデータベースの作成
```sql
1> CREATE DATABASE TestDB COLLATE Japanese_CS_AI
2> SELECT Name, Collation_name FROM sys.Databases
2> GO
```
```
Name Collation_name
---- --------------
master SQL_Latin1_General_CP1_CI_AS
tempdb SQL_Latin1_General_CP1_CI_AS
model SQL_Latin1_General_CP1_CI_AS
msdb SQL_Latin1_General_CP1_CI_AS
TestDB Japanese_CS_AI

(5 rows affected)
```
言語指定を英語でインストールした場合は `COLLATE Japanese_CS_AI` を指定してやる必要があります。

### データの操作
```sql
1> USE TestDB
2> CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
3> INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154)
4> SELECT * FROM Inventory
5> SELECT * FROM Inventory WHERE quantity > 152
6> GO
```

### プロンプト終了
```sql
1> QUIT
```

## BCP (Bulk Copy Program for Microsoft SQL Server)
BCP は Microsoft SQL Server のインスタンスと、ユーザー指定の形式のデータファイルとの間でデータの一括コピーを行います。[^bcp]

[^bcp]: [bcp ユーティリティ | Microsoft Docs](https://docs.microsoft.com/ja-jp/sql/tools/bcp-utility)

### ダンプ
```bash
bcp Inventory out dump.txt -c -U SA -P 'P@ssw0rd' -S localhost -d TestDB
```
```

Starting copy...

2 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1      Average : (2000.0 rows per sec.)
```

#### 出力結果
```bash
cat dump.txt
```
```
1	banana	150
2	orange	154
```

## 動向
|日付      |内容|
|----------|---|
|2016-03-07| SQL Server 2017 プライベートプレビュー リリース [^linux]|
|2016-11-16| SQL Server 2017 CTP 1.0 リリース [^ctp10]|
|2016-12-16| SQL Server 2017 CTP 1.1 リリース [^ctp11]|
|2017-01-20| SQL Server 2017 CTP 1.2 リリース [^ctp12]|
|2017-02-17| SQL Server 2017 CTP 1.3 リリース [^ctp13]|
|2017-03-17| SQL Server 2017 CTP 1.4 リリース [^ctp14]|
|2017-04-19| SQL Server 2017 CTP 2.0 リリース [^ctp20]|
|2017-05-17| SQL Server 2017 CTP 2.1 リリース [^ctp21]|
|2017-07-17| SQL Server 2017 RC1 リリース [^rc1]|
|2017-08-02| SQL Server 2017 RC2 リリース [^rc2]|
|2017-10-02| SQL Server 2017 リリース [^2017]|
|2017-12-19| SQL Operations Studio リリース [^sos]|

[^linux]: [Announcing SQL Server on Linux - The Official Microsoft Blog](https://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/)
[^ctp10]: [Announcing SQL Server on Linux public preview, first preview of next release of SQL Server | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2016/11/16/announcing-sql-server-on-linux-public-preview-first-preview-of-next-release-of-sql-server/)
[^ctp11]: [SQL Server next version Community Technology Preview 1.1 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/16/sql-server-next-version-community-technology-preview-1-1-now-available/)
[^ctp12]: [SQL Server next version CTP 1.2 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/01/20/sql-server-next-version-ctp-1-2-now-available/)
[^ctp13]: [SQL Server next version CTP 1.3 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/02/17/sql-server-next-version-ctp-1-3-now-available/)
[^ctp14]: [SQL Server next version CTP 1.4 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/03/17/sql-server-next-version-ctp-1-4-now-available/)
[^ctp20]: [SQL Server 2017 Community Technology Preview 2.0 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/04/19/sql-server-2017-community-technology-preview-2-0-now-available/)
[^ctp21]: [SQL Server 2017 CTP 2.1 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/05/17/sql-server-2017-ctp-2-1-now-available/)
[^rc1]: [First release candidate of SQL Server 2017 now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/07/17/first-release-candidate-of-sql-server-2017-now-available/)
[^rc2]: [SQL Server 2017 Release Candidate 2 (RC2) is now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/08/02/sql-server-2017-release-candidate-2-rc2-is-now-available/)
[^2017]: [SQL Server 2017 on Windows Linux and Docker is now generally available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/10/02/sql-server-2017-on-windows-linux-and-docker-is-now-generally-available/)
[^sos]: [The December release of SQL Operations Studio is now available | SQL Server Blog](https://blogs.technet.microsoft.com/dataplatforminsider/2017/12/19/the-december-release-of-sql-operations-studio-is-now-available/)

## 参考情報
* [SQL Server on Linux のパフォーマンス情報を DMV から取得 at SE の雑記](http://blog.engineer-memo.com/2017/05/28/sql-server-on-linux-%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%83%85%E5%A0%B1%E3%82%92-dmv-%E3%81%8B%E3%82%89%E5%8F%96%E5%BE%97/)
* [SQL Server on Linux で環境変数を使用したインストールの実施 at SE の雑記](http://blog.engineer-memo.com/2017/06/17/sql-server-on-linux-%E3%81%A7%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%AE%E5%AE%9F%E6%96%BD/)
* [SQLCAT から SQL Server on Linux のモニタリングツールが公開されました at SE の雑記](http://blog.engineer-memo.com/2017/07/09/sqlcat-%e3%81%8b%e3%82%89-sql-server-on-linux-%e3%81%ae%e3%83%a2%e3%83%8b%e3%82%bf%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%84%e3%83%bc%e3%83%ab%e3%81%8c%e5%85%ac%e9%96%8b%e3%81%95%e3%82%8c%e3%81%be%e3%81%97/)
* [SQLServerをLinux Dockerで動かしてみる - Qiita](http://qiita.com/tsgkdt/items/3c898d8616e05eb2c021)
* [microsoft/mssql-server-linux - Docker Hub](https://hub.docker.com/r/microsoft/mssql-server-linux/)
* [Release notes for SQL Server 2017 on Linux | Microsoft Docs](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes)
* [SQL Server - Get Started](https://www.microsoft.com/en-us/sql-server/developer-get-started/)
* [Red Hat Enterprise Linux に SQL Server 2017 の概要 | Microsoft Docs](https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-red-hat)