Open5

Docker で Microsoft SQL Server を実行するときのメモ

しみゆーしみゆー

docker-compose.yaml

version: '3'

services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2022-latest
    container_name: mssql
    ports:
      - 1433:1433
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_SA_PASSWORD=saPassword1234
      - MSSQL_PID=Express
      - MSSQL_LCID=1041
      - MSSQL_COLLATION=Japanese_CI_AS
    volumes:
      - './docker/db/data:/var/opt/mssql/data'
      - './docker/db/log:/var/opt/mssql/log'
      - './docker/db/secrets:/var/opt/mssql/secrets'
しみゆーしみゆー

ACCEPT_EULA

下記について承諾するかどうか
https://documentation.commvault.com/v11/essential/50060_microsoft_sql_server_eula.html

MSSQL_SA_PASSWORD

ネット上に転がっているサンプルでは、SA_PASSWORD としているケースが多かった。

SA_PASSWORD 環境変数は非推奨です。 代わりに、MSSQL_SA_PASSWORD を使用してください。

Microsoft公式に非推奨とあったので、公式の言う通りにMSSQL_SA_PASSWORD とした。
https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash#pullandrun2022

なお、SA_PASSWORDにしてSQLサーバを立ち上げても、SSMSでアクセスはできました。

MSSQL_PID

SQL Serverにはいくつかのエディションがあるのため、それを指定できる。
とりあえず作ってみた的な用途には、Express Editionが適しているのでそれを選択。

https://docs.microsoft.com/ja-jp/sql/sql-server/editions-and-components-of-sql-server-version-15?view=sql-server-ver16#-editions

MSSQL_LCID

下記に従い、ロケールのIDを指定する。
日本語は1041。

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-compatibility-views/sys-syslanguages-transact-sql?view=sql-server-ver15

MSSQL_COLLATION

照合順序

https://docs.microsoft.com/ja-jp/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver15#Server-level-collations

照合順序とは

文字の並び方(順番)を決める基準となるもの。
例えば、「a」と「A」、「あ」と「ア」、「新」と「真」では小さい順に並べたらどういう順番で並ぶのか。そういったことを決めている。

しみゆーしみゆー

SSMSで接続する

SSMSで入力する内容

Server type Database Engine
Server name localhost,1433
Authentication SQL Server Authentication
Login sa
Password MSSQL_SA_PASSWORDに指定したもの

接続できた。

tenryutenryu

エラー解消の参考になりました!ありがとうございます!