💡

Docker の SQL Server へ SSMS で接続してみた

に公開

はじめに

Docker で立ち上げた SQL Server へ向けて、SSMS を使って接続してみました。
意外なところで沼ったので、備忘録として残しておきます。

構成


構成はこんな感じ。
.NET 系の Web システムを Linux 上で動かす構成を考えていたら、こうなってしまいました。

デバッグ (というか動作確認) は実環境に合わせて VirtualBox の Ubuntu に構築するとして、ビジュアル的に SQL Server を操作するには SSMS が必要になりました。
(僕がコマンドライン上で SQL Server を扱うのが苦手というのは内緒)
そこで、VirtualBox の Windows に SSMS をインストール (メインPC は汚したくなかった) し、そこから Docker Container の SQL Server へ接続する必要が出てきました。

SQL Server の立ち上げ

まず、Docker で SQL Server を立ち上げます。

  sqlserver:
    image: mcr.microsoft.com/mssql/server:2019-latest
    ports:
      - "1433:1433"
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=Password123!

最低限の構成は意外とシンプル。
テスト用なのでポートフォワーディングやらパスワードやらは簡単なものでOK。
(外部からは接続させず、Docker 内で接続を完結させるならこのままでもいい気はします)

SSMS を使った接続

まずは、ログイン情報を設定します。

  • Server name: 192.168.x.y,1433
  • Authentication: SQL Server Authentication
    • Login: sa
    • Password: Password123!

サーバー名はメインPC (VirtualBox で VM を立ち上げているマシン) のホスト名とポートを指定します。
(ポートが : ではなく , で区切る必要があるところで軽く沼りました)
ログイン名は既定の sa (System Administrator) を指定します。

次に、追加の接続パラメータを設定します。

TrustServerCertificate=True

(この設定が無いことで沼り散らかしました)

後は接続するだけ!

トラブルシューティング

接続できない時は、Windows の VM 内で Test-NetConnection -ComputerName 192.168.x.y -Port 1433 で接続を検証したり、Linux の VM内で docker ps で起動を確認したり、docker logs <ContainerID> でログを確認したりします。
(まぁ沼ってた時はこれらは通っていたので、かなり苦しみました…)

終わりに

.NET 系のデバッグ、動作確認は Linux 上で行い、開発、DB の確認は Windows 上で行うという構成に一歩近付けたと思います。
やはり DB の中身はビジュアル的に見たいですからね! (←逃げとか言わないでほしい)

また、今回はかなーり Chat GPT 助けられました。
エラーの詳細情報をそのまま貼り付けて「どこがおかしい!?」と何回も聞きまくりました。
何回聞いても嫌な顔せず考えてくれるのは本当に心強いです。

今後も AI を活用しながら、自前サービスを時短でゴリゴリ作っていきたいですね!

Discussion