SQL Server on EC2を選定、初期設定する際のTips集

2020.05.17

しばたです。

EC2上のSQL Serverの初期設定についてのドキュメントが意外と無く、調べてみないとわからなかったことが結構あったので本記事でTipsとしてまとめておきます。

EC2で利用可能なSQL Serverのバージョンやエディション

はじめにEC2上のSQL Serverで利用可能なSQL Serverのバージョンやエディションについて触れておきます。

本日(2020年5月17日)時点でEC2ではMicrosoftがサポートしているSQL Server 2012~2019までの全てのエディションを提供しているのですが、OSの種類によって利用可能なSQL Serverのバージョンやエディションには制限があります。

この点について厳密に明記されたドキュメントは無く、OSとSQL Serverのバージョンの組み合わせについてはその都度調べるしかない様です。
私が調べた限りの雰囲気としては、

  • OSが新しい場合、古いSQL Serverは利用できない傾向がある
  • SQL Serverのバージョンが古い場合、利用可能なエディションは減る傾向がある

となっている様です。

参考として以下に英語と日本語OSにおける利用可能なSQL Serverの一覧表を記載しておきます。

  • 東京リージョン、2020年05月17日時点 (今後変わる可能性は非常に高い)
OSのバージョン SQL Serverのバージョン 利用可能なエディション
Windows Server 2019 (英語) SQL Server 2019 Enterprise, Standard, Web, Express
Windows Server 2019 (英語) SQL Server 2017 Enterprise, Standard, Web, Express
Windows Server 2019 (英語) SQL Server 2016 SP2 Enterprise, Standard, Web, Express
OSのバージョン SQL Serverのバージョン 利用可能なエディション
Windows Server 2016 (英語) SQL Server 2019 Enterprise, Standard, Web, Express
Windows Server 2016 (英語) SQL Server 2017 Enterprise, Standard, Web, Express
Windows Server 2016 (英語) SQL Server 2016 SP2 Enterprise, Standard, Web, Express
Windows Server 2016 (英語) SQL Server 2014 SP3 Enterprise, Standard
Windows Server 2016 (英語) SQL Server 2012 SP4 Enterprise, Standard
OSのバージョン SQL Serverのバージョン 利用可能なエディション
Windows Server 2012 R2 (英語) SQL Server 2016 SP2 Enterprise, Standard, Web, Express
Windows Server 2012 R2 (英語) SQL Server 2014 SP3 Enterprise, Standard, Web, Express
Windows Server 2012 R2 (英語) SQL Server 2012 SP4 Enterprise
OSのバージョン SQL Serverのバージョン 利用可能なエディション
Windows Server 2019 (日本語) SQL Server 2017 Enterprise, Standard, Web
OSのバージョン SQL Serverのバージョン 利用可能なエディション
Windows Server 2016 (日本語) SQL Server 2017 Enterprise, Standard, Web
Windows Server 2016 (日本語) SQL Server 2016 SP2 Enterprise, Standard, Web, Express
OSのバージョン SQL Serverのバージョン 利用可能なエディション
Windows Server 2012 R2 (日本語) SQL Server 2016 SP2 Enterprise, Standard, Web, Express
Windows Server 2012 R2 (日本語) SQL Server 2014 SP3 Standard, Web, Express

SQL Serverのエディションとインスタンスタイプ

SQL Serverはエディションのグレードが上がるほど利用可能な機能が増え求められるスペックも上がります。
このためグレードの高いエディションでは性能の低いインスタンスタイプを使用できない制限があります。

(スペックの低いインスタンスタイプでEnterprise Editionのインスタンスを起動しようとしてもエラーとなる)

こちらも厳密な一覧は無い様ですが、AWS Pricing Calculatorで利用料金を試算する際は使用可能なインスタンスタイプのみリストアップされるので、ここから間接的に調べることができます。
AWS Pricing Calculatorを見る限りではざっくり以下のスペックを求められている様です。

  • Windows Server with SQL Server Enterprise : 4vCPU、7.5GiB Memory
  • Windows Server with SQL Server Standard : 2vCPU、4GiB Memory
  • Windows Server with SQL Server Web : 1vCPU、1GiB Memory

(上記はあくまでも目安です)

余談 : RDS for SQL Serverの場合

RDS for SQL Serverも同様の制限があり、こちらはドキュメントにエディションごとで利用可能なインスタンスタイプの一覧が記載されていますので参考にしてください。

インストールディレクトリ

SQL Server on EC2のインストールディレクトリはデフォルトの

  • C:\Program Files\Microsoft SQL Server\

配下になります。

また、インストールログが

  • C:\Program Files\Microsoft SQL Server\<バージョン番号>\Setup Bootstrap\

配下にありますので、具体的なインストール情報を知りたい場合はこちらを参照すると良いでしょう。

管理ツール

サーバーの管理ツールとしてSQL Server Management Studio (SSMS)が同梱されていますので初期設定はこのSSMSから行います。
詳細は次項で説明しますが、初期状態ではAdministratorユーザーでOSにログインすればWindows認証でデータベースに接続できます。

初期状態ではユーザーデータベースはありませんので、適宜必要なデータベースを作成してください。

ちょっと気を付けたい点

SSMSからデータベースに接続する際の接続先にlocalhost以外にランダムなコンピューター名がリストアップされますが、これはAWSがAMIを作成する際に使用された名称でありEC2インスタンスのコンピューター名ではありません。

(上図の EC2AMAZ-UEC9AB0 は現在のサーバー名ではない)

EC2作成時も別途ランダムなコンピューター名が割り当てられるため、非常に間違えやすいので注意してください。

認証方法

SQL Server on EC2は初期状態では

  • サーバー認証は「Windows認証モード」
  • saユーザーは無効

となっています。
これはSQL Serverを「Windows認証モード」でインストールした際の初期状態であり、SQL Serverの一般的な初期状態です。

認証モードを変更したい、saユーザーを有効にしたいといった場合は以下のドキュメントを参考に実施してください。

一応本記事でも軽く説明しておきます。

認証モードの変更

SSMSでデータベースに接続し、サーバーのプロパティから「セキュリティ」を選択します。
サーバー認証欄を「SQL Server認証とWindows認証モード」に変更し「OKボタン」を押します。

その後SQL Serverの再起動を要求されます。

SSMSのサーバー欄を右クリックして表示されるメニューに「再起動」がありますのでこれを選択しSQL Serverを再起動します。

あとは画面の指示に従えばOKです。

saユーザーの有効化

SSMSでデータベースに接続し「ログイン」にsaユーザーはいますので右クリックかダブルクリックしてプロパティを表示します。

ここでパスワードを任意のものに変更しておきます。
続けて「状態」欄からログインを「有効」にします。

以上で完了です。

リモート接続設定

SQL Server on EC2のリモート接続設定については通常のSQL Serverと全く同一です。
「SQL Server構成マネージャー」から「SQL ネットワークの構成」を適切に設定してください。

もちろんサーバー設定と合わせてセキュリテグループやルートテーブルなどのネットワーク周りの設定も適切に実施しておく必要があります。

ちょっと気を付けたい点

TCP/IPで接続する際のIPアドレス設定ですが、ここで初期設定されているPrivate IPアドレスはAWSでAMIを作成した際のアドレスになっていますので、こちらはちゃんと環境に応じたアドレスにしておく必要があります。

(SQL Server設定のIP 10.0.6.233 はAMI作成時のIPアドレスでEC2に割り当てられたIP 10.0.11.103 になってないので手動で直す必要がある)

【追記】ちょっと気を付けたい点 - その2

本記事を公開したあとに我らがムッシュから指摘を受けたのですが、SSMSのサーバーの「接続」設定は「SQL Server からリモートのSQL Serverのストアドプロシージャを実行する際の設定」であり通常のリモートアクセスとは別の設定でした。
この指摘を受けるまでずっと誤解してました...ご指摘ありがとうございます。

この設定の詳細については以下のドキュメントをご覧ください。

このため下図の設定は必要がある場合のみ行う様にしてください。

名前付きインスタンスの作成

SQL Server on EC2では初期状態で既定のインスタンスが作成されています。
別途名前付きインスタンスを追加したい場合は「SQL Serverインストールセンター」から可能ですがインストールメディアを要求されます。

ボリュームライセンス版のSQL Serverは基本的にインストールメディアにライセンスキーが埋め込まれているためメディアは公開されていません。
SQL Serverのインストールメディアが必要になる場合はAWSサポートに問い合わせてみてください。

最後に

ざっとこんな感じです。
若干昔の内容ですが過去にこんな記事も公開されてますので併せてご覧いただくと良いでしょう。

個人的にはできるだけマネージドなサービスをRDS for SQL Serverを使っていただくのをお勧めしますが、どうしてもEC2上にSQL Serverを構築しなければならない場合もあるかと思います。
そういった際に本記事の内容が参考になれば幸いです。