docker sqlserver is fuck

Docker SQLServer

M1 MacBookでSQL Server(docker)を動作させるのは相性が良くない

ひょんなことからSQL Serverの検証をしなければいけなくなり、dockerで動くか確認していたのですが、どうやらM1チップ内蔵のMacBookと相性が良くなさそうなのでメモを残しておきます。

「M1 MacBook SQL Serverを動かす」みたいな検索ワードでファストビューに出てくる日本語のサイトが、軒並みHello worldレベルの動作想定なので、業務運用だとミスリード記事になってしまいます。GUIツールであるAzure Data StudioもManagement Studioに比べて著しく機能が無いため併せて注意が必要です。

海外サイトで検索するとこういった記事は出てません。むしろGithubなどで、Microsoftはちゃんとサポートして!という内容のコメントが投稿されています。

https://github.com/microsoft/mssql-docker/issues/734

一般的にdockerでSQL Serverを利用する場合下記を利用することになると思います。

image: mcr.microsoft.com/mssql/server:YYYY-latest

上記のimageはM1(arm64)では起動すらしないため下記が推奨されますが、azure-sql-edgeは既存imageの代替え品ではありません。コマンドラインツールであるsqlcmdすら存在しないのは、何を想定して作成しているのか不明でした。

sqlcmdについては上記のGithubのコメントに記載されている通り、別imageを作成してそれをバインドしサーバーの指定をhost.docker.internalにする事で対応できます。

image: mcr.microsoft.com/azure-sql-edge

厄介なのは、azure-sql-edgeがサポートしていない機能があまりにも多過ぎるという事です。サイトが巧妙ですが、サポートされる機能のページ内にサポートされていない機能がふんだんに記載されています(笑)。

DB設計周りの動的管理ビューやDBエンジンのCLRに依存する機能などは、業務システムだと無意識に使っているのではないでしょうか。自分はこの辺を使っているシステムを見ていたので、azure-sql-edgeでの運用は不可能と判断せざるをえませんでした。

Azure SQL Edge でサポートされる機能

全体的にMS系は情報が少なく、かつ国内のサイトだと軽度の内容でも出来ることになってしまう記事が乱立しているので注意して下さい。

  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。まあ、昔ながらの方法でやりたいこともありますよね。

-Docker, SQLServer