連載
» 2016年04月14日 05時00分 公開

実録:Windows ServerコンテナでSQL Serverを動かしてみたvNextに備えよ! 次期Windows Serverのココに注目(46)(3/3 ページ)

[山市良,テクニカルライター]
前のページへ 1|2|3       

SQL Management Studioをコンテナ内のSQL Serverインスタンスに接続してみる

 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は既定でリモート管理が「無効」になっていることが接続失敗の原因でした。

画面7 画面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"
画面8 画面8 「sqlcmd」ユーティリティーを使用して、SQL Server 2014 Expressのリモート管理を許可する

 なお、コンテナホストの外部からコンテナ上の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

SQL Server on Hyper-V Containerはできる? できない?

 今回は、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サイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。