Linux版SQL ServerをDockerで動かしたときにサーバの照合順序を変更したい

はじめに

他のデータベースにもれず、SQL ServerもDockerで動かすことが出来ます。

ただ、単純にDocker Hubのページのように

> docker run \
    --name=mssql \
    --hostname=my-docker-mssql \
    -d \
    -e 'ACCEPT_EULA=Y' \
    -e 'SA_PASSWORD=mssqllinux@1' \
    -p 1433:1433 \
    microsoft/mssql-server-linux:latest

とやると言語やサーバの照合順序が英語(SQL_Latin1_General_CP1_CI_AS)になってしまいます。

f:id:jyuch:20180904203231p:plain

データベースの照合順序は作成時に指定できますしデータベース名に日本語を使わなければそうそう地雷を踏みぬくことも無いと思いますが、本番環境と異なっていると変なところで踏みぬいて嫌な感じになるので出来れば統一したいものです。

環境変数

さて、Docker Hubのページにはぱっと見

しか紹介されておらず、照合順序が変更できなさそうですがConfigure SQL Server settings with environment variables on Linuxを見るとかなりの設定が出来るようです。

というわけでこれが正解。

> docker run \
    --name=mssql \
    --hostname=my-docker-mssql \
    -d \
    -e 'ACCEPT_EULA=Y' \
    -e 'SA_PASSWORD=mssqllinux@1' \
    -e 'MSSQL_LCID=1041' \
    -e 'MSSQL_COLLATION=Japanese_CI_AS' \
    -p 1433:1433 \
    microsoft/mssql-server-linux:latest

f:id:jyuch:20180904205759p:plain

おわり