概要
Announcing SQL Server on Linux public preview, first preview of next release of SQL Server
Linux版のパブリックプレビュー版が出たとのこと。
それにあわせてか、Dockerの公式イメージもDockerHubに公開されていたため、さっそく試してみましたよっと。
2016年11月17日現在の状況で書いています。
参照するべきサイト
Dockerで動かす際に、以下のサイトが参考になりました。
Run the SQL Server Docker image on Linux, Mac, or Windows
実践
Dockerが動く環境は既にあるものとして進めます。
実行ユーザがdockerグループに入っていて、sudo が必要でない環境もあるかと思います。
pull
まずは、pullしましょう。
sudo docker pull microsoft/mssql-server-linux
SQLServer起動
こいつ、動くぞ!と感動する前に、落ち着いてdocker runしましょう。
docker run -e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=P@55w0rd' \
-p 1433:1433 \
-d \
-v $(pwd):/var/opt/mssql/ \
--name mssql \
microsoft/mssql-server-linux
本家の記事にあるコマンドラインをそのままコピーすると、変な文字列が入っている場合があるので、貼り付けたあとは注意深く確認してください。
環境変数として、SQL認証のSAユーザに対するパスワードを設定していますが、パスワードは複雑である必要があります。
記事の下の方にこんなコメントがついてます。
It's also worth noting that the docker image requires passwords to match the SQL Server password validation rules. If they don't, the docker image will stop after around 5 seconds with no warning.
P@55w0rd
is a great password, for what it's worth.
単純なパスワード文字列だと、バリデーションにひっかかって、5秒後ぐらいに警告もなく終了するよ、と。(たぶん)
なので、ここでは、Peschkajさんの助言に従って、P@55w0rdとしてみました。
-vオプションでデータやログを永続化するようにしておきます。
確認
このDockerイメージには、sqlcmdコマンドラインツールが入っていないようなので、SQLServer Management Studioから接続し、起動を確認します。
サーバのプロパティ画面
接続の詳細画面
終わりに
いろんなテストデータを作ったり消したり、ある時点のデータで環境を構築したいといったことが、とても気軽にできる点が、とても良ろしい。
既定では、言語がEnglish(United States)、照合順序はSQL_Latin1_General_CP1_CI_ASとなっています。
言語が日本語、Japanese_CI_ASとなっているようなところから、データのインポート/エクスポートでデータをコピーするようなときは、先にデータベースを言語、照合順序を指定して、作成すると良いようです。
何も考えずにインポートしたら、日本語を含むnvarcharの列が化けて入ったりしました。