[Mac]SQL Database用にローカルテスト環境を準備する

AzureにはSQL DatabaseというほぼほぼSQLServerのように使えるマネージドされたRDBサービスが存在します。月額固定料金で利用できるため私は好んで使っているのですが、今回ローカル用SQLServer「もどき」をMacでも準備できるとのことだったので、使ってみたいと思います。

Windowsの場合はSQLServer ExpressやDevバージョンを使えば良いと思います。

Dockerの準備

https://www.docker.com/products/docker-desktop/

ダウンロードしたらダブルクリックで実行。Applicationフォルダへドラッグドロップ。
完了したらlauchpadに入っているので起動してください。

Acceptしてそのままfinish。するとログイン画面が出てくるのでログイン。アカウントが存在しない場合は作成。

このタイミングで、[右上の歯車マーク]-[Resources]を開き、どれくらいハードリソースを使うのか調整しておいても良いでしょう。ちなみにSQLServerは2GBは必要との情報がありましたのでそれ以上にしておくと良いかも。

続いてターミナルを開き、以下のコマンドを実行。

sudo docker pull mcr.microsoft.com/azure-sql-edge:latest

完了したら以下を実行。

sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge

MSSQL_SA_PASSWORD= にはsaのパスワードを設定。
※このパスワードの強度が低いとコンテナが立ち上がりません。大文字小文字記号を混ぜておけば大丈夫かと。

以下のコマンドでコンテナが作成されているか確認。

docker ps -a

DockerDesktop上でも確認できますね。

停止している場合は再生ボタンで開始してください。

AzureDataStudioをインストールして接続

https://learn.microsoft.com/ja-jp/azure-data-studio/download-azure-data-studio?tabs=win-install%2Cwin-user-install%2Credhat-install%2Cwindows-uninstall%2Credhat-uninstall

URL先からMac用をダウンロードしてください。

続いて接続先を追加します。設定内容は以下。ユーザはsa、パスワードは先ほど設定したものにしてください。saは管理者アカウントです。

次の画面で認証関係のエラーが出るかもしれませんがTrustして次へ。

無事接続ができたら、Databasesフォルダで右クリックしDatabaseを新規作成。テスト用のtableを追加します。今回はnvarcharの値を持つだけのテーブルを作成し、そこに1アイテムだけ保存。

cmd+sで保存するとテーブルが作成されます。

今回、testという名前のテーブルを作成し、列はtitleです。データベースを右クリックしqueryを作成、Insert文を実行しましょう。

INSERT test (title) VALUES ('Hello MSSQL!')

自分の環境ではtitleは存在しませんと出るものの、実行すると作成されました。テーブルを右クリックしSelect top 1000を選択して確認できます。

まとめ

Windows環境ではすんなり準備できますが、やはりMacだと一手間必要ですね。ただ一度準備できれば問題なく使えそうなのでこれからもこの環境でやってみたいと思います。

続きである、コントローラで接続した記事はこちら。