SQL Server 2014 SP1 Expressのインスタンスが動作していることは、コンテナ内で「Get-Service」コマンドレットでサービスの稼働状況を参照することで確認できます。
インスタンスへのリモートからの接続が可能であるかどうかを調べるには、コンテナホストまたは別のWindows PCにインストールされた「SQL Server Management Studio」(GUIのSQL Server管理ツール:無償)を接続して試してみるとよいでしょう。
コンテナのネットワークは、コンテナホストが提供するNAT(Network Address Translation:ネットワークアドレス変換)が構成されたサブネットに接続され、コンテナホストからはファイアウォールを経由することなくIPアドレスでアクセスできます。
コンテナホストから試してみたところ、接続は失敗しました(画面7)。ここまですっかり忘れていましたが、SQL Server 2014 Expressは既定でリモート管理が「無効」になっていることが接続失敗の原因でした。
GUIの管理ツールを使用せずに、コマンドライン環境だけでSQL Server 2014 Expressでリモート管理を許可するには「sqlcmd」ユーティリティーを使う方法があります。
sqlcmdユーティリティーは既定でインストールされますが(C:\Program Files\Microsoft SQL Server\Client SDK\DDBC\110\Tools\Bin\SQLCMD.EXE)、インストール直後は環境変数に追加されたパスが反映されていません。そこで、いったんコンテナを停止し、再び起動してからsqlcmdユーティリティーを使用して「sp_configure 'remote admin connections',1」を実行してリモート管理を許可します(画面8)。
[MySQLExp01]: PS C:\Windows\System32> Exit PS C:\> Stop-Container -Name "MySQLExp01" PS C:\> Startop-Container -Name "MySQLExp01" PS C:\> Enter-PSSession -ContainerName "MySQLExp01" -RunAsAdministrator [MySQLExp01]: PS C:\Windows\System32> Stop-Service "MSSQL`$SQLEXPRESS" [MySQLExp01]: PS C:\Windows\System32> sqlcmd -S .\SQLEXPRESS -U sa -P P@ssw0rd -Q "sp_configure 'remote admin connections',1" [MySQLExp01]: PS C:\Windows\System32> sqlcmd -S .\SQLEXPRESS -U sa -P P@ssw0rd -Q "RECONFIGURE WITH OVERRIDE" [MySQLExp01]: PS C:\Windows\System32> Start-Service "MSSQL`$SQLEXPRESS"
なお、コンテナホストの外部からコンテナ上のSQL Serverインスタンスへのアクセスを可能にするには、コンテナホストのWindows PowerShellで次のコマンドラインを実行し、NATの静的マッピングと「Windowsファイアウォール」の「ポートの許可」を構成してください。
PS C:\> Add-NetNatStaticMapping -NatName "ContainerNAT" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 127.16.0.2 -ExternalPort 1433 -InternalPort 1433 PS C:\> New-NetFirewallRule -Name "TCP1433" -DisplayName "SQL TCP/1433" -Protocol TCP -LocalPort @(1433,1433) -Action Allow
今回は、Windows Server 2016のServer Coreインストールがベースの「WindowsServerCore」イメージを使ってWindows Serverコンテナを作成し、.NET Framework 3.5の機能やSQL Server 2014 SP1 Expressをインストールしました。
WindowsコンテナにはWindows Serverコンテナの他にもう1つ、Hyper-Vコンテナがあります。Hyper-VコンテナでSQL Server 2014 SP1 Expressを同じように展開できるかというと、「できない」というのが結論になります。
Hyper-Vコンテナは、Hyper-Vの仮想マシン環境でNano ServerのOS環境を動かし、Nano ServerのOS環境を共有するかたちで「NanoServer」イメージをHyper-Vコンテナとして実行します。
Nano Serverは、.NET Frameworkのサブセットである「.NET Core」を含みますが、.NET Coreには.NET Framework 3.5の機能のサポートは含まれません。また、SQL Serverのセットアップは、Windowsインストーラー(.msi)に基づいています。Nano Serverは「Windows Installerサービス(msiserver)」および「Msiexec.exe」を搭載していないため、SQL Serverのセットアップを開始することができないのです。
そして、Nano ServerにSQL Serverをインストールできないということは、Hyper-VコンテナにSQL Server 2014 SP1 Expressをインストールできないということでもあります。今後、Nano Serverに対応した別の方法が提供されるかもしれませんが、現時点ではできません。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.