Azure Data Studioのプレビュー機能を駆使してローカルのSQLサーバを構築してみた
はじめに
こんにちは。
先日、SQLサーバをローカル環境に構築する機会があったのですが、意外とハマることが多くて大変でした。備忘録としてまとめます。
また、今回は管理ツールとして旧来のSSMS(SQL Server Management Studio)ではなく、Azure Data Studioを使います。最新のプレビュー機能も使いますのでその点も参考にしてください。
背景
これまでAzure PostgreSQLフレキシブルサーバを使ってました。ただ、1年の無料期間が終わるということもあり、ちょうど無料利用のオファー(プレビュー)を出していたAzure SQL Databaseに乗り換えようと思っていました。(Azure SQL Databaseは2023年10月ごろから無料オファーを出しています。)
それに伴い、SQLサーバの開発環境も整備することになったわけですが、Azureポータルを見るとデータベースの管理ツールとしてAzure Data Studioが推されています。プレビュー機能などで最近はかなり使いやすくなっているようなので、旧来のSSMSではなくAzure Data Studioで構築してみました。
Azure Data Studioとは?
Azure Data Studioは、Microsoftが提供する無料の統合データ管理ツールです。SQLServer、Azure SQL Database、PostgreSQLなど、SQL Server以外にもさまざまなデータベースの管理に使用できます。
シンプルでモダンなインターフェイスで、クエリエディタ、オブジェクトエクスプローラー、ノートブック、拡張機能などの機能を提供しています。とくにインターフェイスという意味では、ほとんどVS Codeです。かなり既視感のあるデザインで普段VS Code使っている人からすると使いやすいのではないかと思います。
ローカル開発環境の構築方法
ここからは本題のローカル環境構築方法についてです。
SQLサーバのインストール
まずはSQLサーバをインストールします。以下からダウンロードします。
今回は開発向けで本番運用するわけではないのでdeveloper版を使用しました。インストーラーをダウンロードして、ウィザードにしたがってインストールを進めていきましょう。
とくに難しいことはないので、詳細は割愛します。
インストールが終わると以下の画面が表示されるので「閉じる」を押します。

Azure Data Studioでのインストール
SQLサーバのインストールが完了したら、Azure Data Studioを用意します。まずは以下のリンク先からインストールしてください。こちらも詳細は割愛します。
インストールが終わってAzure Data Studioを起動すると以下の画面が開きます。

また、右下にプレビュー機能を使用可能にしますかというメッセージが出てくるので「はい」を押します。

(ここは初回インストール時には英語で出るはずです。キャプチャを取り忘れて日本語化した後に再取得しているため日本語になっています。)
プレビュー機能を使うとAzure Data Studio上からデータベースやユーザの作成、といった作業ができるようになるので大変便利です。
次に、言語設定を英語から日本語にします。
VS code同様、左の「拡張機能」タブからmarketplaceを開き「japanese」と入力するとJapanese Language Pack for Azure Data Studioが出てくるのでインストールします。

インストールすると右下にChange Language and Restartボタンがでるので押すとアプリが再起動して日本語になります。

データベース作成とSQL認証ユーザの準備
データベース作成をするためまずはシステムデータベースに接続します。

- 「新しい接続」をクリック
- ホストに
localhostを指定 - 認証方式は
Windows認証を選択(最初はデフォルトでwindows認証になります)

ログインできたら、以下の手順でデータベースとサーバユーザを作成します。
- 新しいデータベースを作成
接続したサーバlocalhostを右クリックしてデータベースの横の+を選択しデータベースを作成します。(今回はtomostocks-dbというデータベースを作成します。)いきなりプレビュー機能ですね。


- SQL認証用のサーバログインを作成
次にサーバのログインを作成します。デフォルトではwindows認証でしかサーバにログインできません。SQL認証でログインできるようにサーバログインを作成します。(データベースユーザは後程作成します。)
localhostの下のセキュリティ>ログインを右クリックし「新しいログイン(プレビュー)」を選択し作成します。(今回はuser01です)

認証はSQL認証を設定してください。今回はローカル用なのでパスワードの期限を適用しますのチェックは外してしまいました。
見えていませんが、この下のサーバロールはsysadminを選択しています。

- データベースユーザを作成
次にデータベースユーザを作成します。{作成したデータベース名}>セキュリティ>ユーザを右クリックし「新しいユーザ(プレビュー)」を選択し作成します。(今回はuser01というユーザです。)

ログインには先ほど作成したログインのuser01を指定しています。

今回は既定のスキーマにはdb-ownerを設定しました。
最初はdb_access権限を付与していたのですが、後からdb_owner権限が必要だと気づきました。db_access権限だと、データベースへの接続はできるものの、テーブルの作成などの操作ができないんですね。一方、db_owner権限はデータベースの所有者権限で、そのデータベースに対するほとんどすべての操作が可能になります。適当に選んではダメですね、、。
以上で、データベースとユーザの作成は終了です。
プレビュー機能だらけですが、クエリを書くことなくAzure Data Studio上のGUI操作で作成できるのは便利ですね。
TCP/IPの有効化とアプリからのログイン
データベースを作成したので、アプリから接続してみよう、と思いますがその前にTCP/IPを有効化する必要があります。
有効化はSQLサーバ 2022 構成マネージャーでおこないま
す。
SQLサーバ 2022 構成マネージャーはwindowsのスタートメニューからインストールしたMicrosoft SQL Server 2022を見るとその下にあります。

以下の画面からTCP/IPを有効化します。

反映するにはサービスの再起動が必要ですが、次でOS再起動するのでいったん放置しておきます。
SQLサーバでSQL認証を許可する
さきほど、SQL認証用のログインを作成しましたがこれだけではSQL認証できません。SQL認証を使用するためには、SQLサーバの認証方式も変更する必要があります。
ただ、ここでついにAzure Data Studioで該当の操作を見つけられないという問題が発生しました。時間をかけていろいろ調べたのですが、見つけられませんでした、、。
ここまでは順調にAzure Data Studio + SQLサーバの既存ツールで設定してきたので走り切りたかったのですが、泣く泣くSQL Server Management Studio(SSMS)を使います。
SSMAは以下からインストールできます。ページ下部の日本語用リンクからインストールしましょう。
インストール中では再起動を求められます。インストールが完了したらSSMSを起動して、「サーバへの接続」の設定をします。
サーバ名は、デフォルトで表示されているものをそのまま選択します。認証方式はWindows認証を選択します。
接続のセキュリティでサーバ証明書を信頼するにチェックを入れてください。
ログインできたら、以下の手順で認証方式を変更します。
- オブジェクトエクスプローラーでサーバを右クリック
- 表示されたコンテキストメニューから「プロパティ」を選択
- サーバのプロパティウィンドウが開くので、左側のペインから
セキュリティを選択 - 右側のペインで、
サーバ認証セクションのSQL Server および Windows 認証モードを選択 - OKを押して設定を保存

以上で、(極力)Azure Data Studioを用いたSQLサーバのローカル環境構築は完了です。アプリから接続できることを確認してみてください。
まとめ
今回は、移行先のデータベースをAzure SQL Databaseに決めたことをきっかけに、SQLサーバをローカル環境に構築する方法を紹介しました。
最後はSSMSに頼ってしまったものの、Azure Data Studioのプレビュー機能でほとんどの作業をGUIでできてしまうのはとても便利でした。
ここはもしやり方知っている方いればぜひ教えてください。今後のアップデートにも注目したいと思います。
以上、備忘録です。ありがとうございました。
Discussion