EC2でのSQL Server Expressの利用に関するよもやま話

2021.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

EC2でSQL Server Express扱う際の情報が意外と見つからなかったのでいろいろ調べてみました。
本記事では調べた内容をざっくばらんに共有していきます。

はじめに

SQL Serverには利用する機能や用途に応じて様々なエディションがありますが、Express Editionはデスクトップ、WEB、小規模サーバー向けに用意された無料エディションになります。

(SQL Serverのダウンロードページより)

無料エディションなので利用可能スペックに制限はありますが、AWSにおいてもRDS for SQL Serverでの提供およびSQL Server ExpressがバンドルされたAMIが公開されており普通に使うことができます。

以下に本日時点で利用可能なRDS for SQL ServerとSQL Server Express入りAMIのリストを記載します。

RDS for SQL Server

SQL Serverのバージョン 利用可能なインスタンスタイプ 備考
SQL Server 2019 Express db.t3.small – db.t3.xlarge
SQL Server 2017 Express db.t2.micro – db.t2.medium
db.t3.small – db.t3.xlarge
SQL Server 2016 Express db.t2.micro – db.t2.medium
db.t3.small – db.t3.xlarge
SQL Server 2014 Express db.t2.micro – db.t2.medium
db.t3.small – db.t3.xlarge
SQL Server 2012 Express db.t2.micro – db.t2.medium
db.t3.small – db.t3.xlarge

英語版 Windows Server EC2

  • 東京リージョン (2021年6月8日時点)
OS SQL Server Expressのバージョン 備考
Windows Server 2019 (英語版) SQL Server 2019 Express
Windows Server 2019 (英語版) SQL Server 2017 Express
Windows Server 2019 (英語版) SQL Server 2016 Express SP2
Windows Server 2016 (英語版) SQL Server 2019 Express
Windows Server 2016 (英語版) SQL Server 2017 Express
Windows Server 2016 (英語版) SQL Server 2016 Express SP2
Windows Server 2012 R2 (英語版) SQL Server 2016 Express SP2
Windows Server 2012 R2 (英語版) SQL Server 2014 Express SP3
Windows Server 2012 (英語版) SQL Server 2014 Express SP3
Windows Server 2012 (英語版) SQL Server 2012 Express SP4

日本語版 Windows Server EC2

  • 東京リージョン (2021年6月8日時点)
OS SQL Server Expressのバージョン 備考
Windows Server 2016 (日本語版) SQL Server 2016 Express SP2
Windows Server 2012 R2 (日本語版) SQL Server 2016 Express SP2
Windows Server 2012 R2 (日本語版) SQL Server 2014 Express SP3
Windows Server 2012 (日本語版) SQL Server 2014 Express SP3
Windows Server 2012 (日本語版) SQL Server 2012 Express SP4

非 Windows EC2

  • 東京リージョン (2021年6月8日時点)
OS SQL Server Expressのバージョン 備考
Amazon Linux 2 SQL Server 2019 Express
Amazon Linux 2 SQL Server 2017 Express
Ubuntu 20.04 SQL Server 2019 Express
Ubuntu 18.04 SQL Server 2019 Express
Ubuntu 16.04 SQL Server 2019 Express
Ubuntu 16.04 SQL Server 2017 Express

EC2の利用料金について (本当に無料なのか?)

RDS for SQL Serverであればエディション毎の料金がばっちり記載されているので利用費がすぐわかります。

対してSQL Server Express入りAMIを使ったEC2の利用料金は少しわかりにくい形となっています。

EC2の料金ページを確認しても検索条件に「SQL Server Express入りWindows (またはLinux)」は無く、どのOSを選ぶべきか初見では迷う事でしょう。

ちなみにAWS Pricing Calclatorでも同様です。

(AWS Pricing CalclatorでもSQL Server Expressは対象に無い)

SQL Server Express on EC2 の利用料金

先に正解を述べておくと、SQL Server Expressは無料エディションなのでEC2の利用費はSQL Serverの入っていないOSで見積もって構いません。

AMIの請求情報 (Usage operation)

AWSから提供されるAMIではAMI自体に利用費のベースとなる請求情報が設定されています。

それが「使用操作(Usage operation)」であり、上記ドキュメントを引用すると

Amazon EC2 インスタンスの操作、および AMI に関連付けられている請求コード。たとえば、RunInstances:0010 と指定します。[使用操作] は、AWS のコストと使用状況レポート (CUR) の 明細項目/オペレーション列と、AWS Price List API に対応しています。

とあり、AMIの操作と請求コード(上記0010の部分)がセットになっています。
SQL Serverに関わる使用操作の一覧をリストアップすると以下の様になっており、これによりEC2の利用単価が変わるわけです。

プラットフォーム 使用操作
Linux/UNIX RunInstances
SQL Server Enterprise RunInstances:0100
SQL Server Standard RunInstances:0004
SQL Server Web RunInstances:0200
Windows RunInstances:0002
Windows with SQL Server Enterprise RunInstances:0102
Windows with SQL Server Standard RunInstances:0006
Windows with SQL Server Web RunInstances:0202

一例として日本語Windows Server 2016のAMI ami-06e38febac0ba5217 (Windows_Server-2016-Japanese-Full-SQL_2016_SP2_Express-2021.05.12) を挙げると、

使用操作はRunInstances:0002であり通常のWindowsと同等であることがちゃんとわかります。
もちろんLinux OSも同様です。

既存EC2にSQL Server Expressをインストールして使えるのか?

ここまででSQL Server Express入りのAMIは普通に使えることがわかりましたが、SQL ServerのインストールされていないWindows ServerインスタンスにSQL Server Expressをインストールして利用することは可能なのでしょうか?

免責事項

本節ではSQL Serverのライセンスに関わるはなしをするので最初に免責事項を。

極力間違いの無い様に努めて書いていますが、あくまでも私いち個人の解釈にすぎず、本節の内容はライセンスに対する記述の正確さを保証しません。
仮に内容に誤りがあり、それによりいかなる不利益を被ったとしても一切の責任を負えませんので予めご了承ください。

ライセンスに関する正式な判断が必要になる場合は必ず Microsoft に確認してください。

SPLA と SQL Server Express ライセンス条項

AWSなど利用者がハードウェアを所有しない環境においてWindows Serverなどの有償製品を使用する際はSPLAに従う必要があり、

  • SPLAの元AWSから販売されるSQL Server入りAMIを使う *1
  • ライセンスモビリティを行使してオンプレ用SQL ServerライセンスをAWS環境に移動する (要Microsoftの審査)

のいずれかの方法を採る必要があります。

ただ、SPLAで販売される各製品の利用権を記載しているドキュメントであるService Provider User Rights(SPUR)を確認するとSPLAの対象となるSQL Serverは

  • SQL Server 2019 Standard Core (Core License)
  • SQL Server 2019 Enterprise Core (Core License)
  • SQL Server 2019 Web Core (Core License)
  • SQL Server 2019 Standard (SAL)

と記載されており、Express Editionは含まれていません。

そしてSQL Serve Express Edtion自体のライセンス条項はSQL Server Expressのソフトウェアに同梱されています。

  • デフォルトで C:\Program Files\Microsoft SQL Server\<バージョン番号>\License Terms にある

(なお、古いバージョンであればWEBで公開されています。)

本記事では一例ととして日本語のSQL Server 2016 Expressのライセンス条項を参照すると、

お客様がこれらのライセンス条項を遵守することを条件として、お客様には以下が許諾されます。
 
1. インストールおよび使用に関する権利。お客様は、本ソフトウェアの任意の数の複製を、第三者の共有デバイスを含む任意のデバイスにインストールして使用することができます。
 
(マイクロソフト ソフトウェア ライセンス条項 MICROSOFT SQL SERVER 2016 EXPRESS より引用)

と「第三者の共有デバイスを含む任意のデバイス」を明示してかかれており、EC2にSQL Server Express Editionをインストールして使用することは問題ないであろうと判断できます。
(当然ですが、他バージョンの場合は各バージョンに応じたライセンス条項を確認してください)

インストール以外の条件については適宜ライセンス条項に違反しない形で利用する様にしてください。

EC2でSQL Server Expressを利用する際の注意点

続けて個人的にEC2でSQL Server Expressを使用する際に気を付けるべき点を紹介します。

最初に触れましたが無償エディションであるSQL Server Expressでは利用可能スペックに制限があります。
その制限はバージョン毎で異なるので詳細は個別に確認していただいきたいですが、SQL Server 2016 Expressの制限を一部紹介すると、

機能 制限 備考
1 つのインスタンスで使用される最大計算容量 - SQL Server データベース エンジン 1 ソケットまたは 4 コアのいずれか小さいほうに制限 SQL Server 2016 Expressの場合
SQL Server データベース エンジン のインスタンスごとのバッファー プールの最大メモリ 1410 MB SQL Server 2016 Expressの場合
リレーショナル データベースの最大サイズ 10 GB SQL Server 2016 Expressの場合

であり、この制限を超えないインスタンスで使用する必要があります。
データベースサイズやメモリサイズの制限についてはSQL Serverの内部設定で決まるためEC2側で過剰であっても単純に無駄になるだけで済みますが、CPUコア数については超えた時点で即ライセンス違反になるので注意してください。

最後に

ざっとこんな感じです。
軽く書くつもりが予想外のボリュームになってしまいました...

そう多くないかもしれませんがEC2でSQL Server Expressを使いたいと考えている方もいるかと思います。
本記事の内容がそういった方の役に立てば幸いです。
(でもライセンスについては必ず Microsoft に確認してください)

脚注

  1. 一応AWSの規約上はAWS外のサービスプロバイダーからSQL ServerのSPLAライセンスを購入しAWS環境で使うことも可能ですが、その必然性は全くないでしょう。