basyura's blog

あしたになったらほんきだす。

Docker + SQLServer + Azure Data Studio

はじまり

SQL をそろそろ真面目にやらないとレビューアとして成立しないなと重い腰を上げる。SQL 知識皆無ではないしパフォーマンス改善のための活動はしていたのだけど、詳しい人に頼りつつ回している状況だった。詳しい人が抜けてしまったので改めて。JOIN があると悩み始めるレベルで、凝ったクエリになるとウンコードといっしょじゃんと思ってしまい思考が停止してしまう。脳力が低いのでコードを書くときは理解しやすいよう気をつけてやってきたのに、このクエリときたら・・・となる。分解して考えれば分かるとは言われるものの、それはそうだけどもうちょっとなんとかならないのかなと思う。

Docker で SQLServer (mssql) を入れる

# イメージ取得
$ docker pull mcr.microsoft.com/mssql/server
# コンテナ起動
$ docker run --name mssql \
          -e "ACCEPT_EULA=Y" \
          -e "SA_PASSWORD=<strong password>" \
          -e "MSSQL_LCID=1041" \
          -e "MSSQL_COLLATION=Japanese_CI_AS" \
          -p 1433:1433 \
          -d mcr.microsoft.com/mssql/server
# コンテナに接続
$ docker exec -it <container_id|container_name> \
          /opt/mssql-tools/bin/sqlcmd \
          -S localhost \
          -U sa \
          -P <your_password>

パスワードポリシー に従って SA_PASSWORD を設定しないと起動しない (コンテナが起動してすぐ落ちる)。

既定で、パスワードは 8 文字以上の長さにする必要があり、次の 4 つのセットのうち 3 つから文字を含める必要があります。 大文字、小文字、10 進数、記号です。

これに気が付かずダメなのかと思って諦めかけた。

Azure Data Studio

業務では SSMS を使っているけど、構築環境が mac なので Azure Data Studio を使ってみる (SSMS は起動が遅いし、起動後も微妙に CPU を食うのが嫌)。

zip をダウンロードして展開するだけなので簡単。

接続設定

DB 作成

DB 作れた

見た目が VSCode と一緒だなと思ってバージョン情報を見ると、Electron、Chrome、 Node.js と書いてあるので一緒なんだろう。あまり触れてないけどやりたいことは十分できそうなので驚いた ( MS 網に包囲されまくっているのが日々嫌に思っているのだけど流石だなと認めざるをえない)

実行計画を表示

出し方が分からなくてさまよってしまった。

  • 「Command + Shift + P」でコマンドパレットを開く
  • コマンドパレットから「Preferences: Open User Settings」を開く
  • ユーザー設定画面で、「workbench.enablePreviewFeatures」を検索
  • 左側の鉛筆アイコンをクリックし、「false」から「true」へ変更

まとめ

Docker と MS のおかげではあるけど、サクッと環境を作れたのであとは学ぶのみ。 とりあえず JOIN の種類からおさらい・・・。

※ 最近の若者としゃべると DB を (でぃーびー) と言ってるのだけど、おっさんとしては慣例的に DB (でーびー) で定着してしまってるあたりがギャップを感じざるをえない。