EC2でのSQL Server Expressの利用に関するよもやま話
しばたです。
EC2でSQL Server Express扱う際の情報が意外と見つからなかったのでいろいろ調べてみました。
本記事では調べた内容をざっくばらんに共有していきます。
はじめに
SQL Serverには利用する機能や用途に応じて様々なエディションがありますが、Express Editionはデスクトップ、WEB、小規模サーバー向けに用意された無料エディションになります。
無料エディションなので利用可能スペックに制限はありますが、AWSにおいてもRDS for SQL Serverでの提供およびSQL Server ExpressがバンドルされたAMIが公開されており普通に使うことができます。
以下に本日時点で利用可能なRDS for SQL ServerとSQL Server Express入りAMIのリストを記載します。
RDS for SQL Server
- 2021年6月8日時点
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のライセンスに関わるはなしをするので最初に免責事項を。
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のライセンス条項を参照すると、
お客様がこれらのライセンス条項を遵守することを条件として、お客様には以下が許諾されます。
- インストールおよび使用に関する権利。お客様は、本ソフトウェアの任意の数の複製を、第三者の共有デバイスを含む任意のデバイスにインストールして使用することができます。
(マイクロソフト ソフトウェア ライセンス条項 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 に確認してください)
一応AWSの規約上はAWS外のサービスプロバイダーからSQL ServerのSPLAライセンスを購入しAWS環境で使うことも可能ですが、その必然性は全くないでしょう。 ↩︎