Azure SQL Database のユーザー追加方法

基本的な考え方は、SQL Server と同じらしい。

  • SQL Database のユーザーは、インスタンス(サーバー)にログインする用の「ログインユーザー」と、インスタンスに含まれるデータベースを利用する用の「データベースユーザー」の 2 種類存在する。

  • インスタンスへのログインはログインユーザーを使用し(接続文字列とかで使用するログイン情報もこれ)、ログイン後のデータベース利用では当該ログインユーザーにマップされたデータベースユーザーが使用される。

  • 特定のデータベースにのみアクセス可能なユーザーを追加するような場合、基本的にはログインユーザーとデータベースユーザー、それぞれについて追加が必要となる。

  • 1 つのログインユーザーを複数のデータベースユーザーにマップする事も可能だが、各データベースユーザーにマップできるのは、1 ログインユーザーのみ。

  • データベースの権限設定は、ログインユーザーではなく、データベースユーザーに対して行う。

  • ユーザーの追加作業は、SQL Server だと SSMS の GUI から行えるが、Azure SQL Database だとスクリプト実行するしかないみたい(GUI でメニュー項目を選択することは可能だが、結局スクリプトが開く)。

ユーザー追加例として、特定のデータベースのみ使用できるユーザーを追加する場合は、以下。

-- ログインユーザーを login_name/password で作成
-- ログインユーザーは master データベース上に作成する必要があるので、master データベースに接続してスクリプト実行
CREATE LOGIN login_name WITH PASSWORD = 'password'

-- データベースユーザーを user_name で作成し、login_name ログインユーザーにマップ。デフォルトスキーマは dbo を指定(スキーマについてはあまりよく理解してない・・・)
-- データベースユーザーは対象のデータベース上に作成する必要があるので、対象データベースに接続してスクリプト実行
CREATE USER user_name FOR LOGIN login_name WITH DEFAULT_SCHEMA = dbo

-- 上記で作成したデータベースユーザーに対して、権限を設定する(ここでは完全なアクセス許可を持つ db_owner を設定)
-- 接続して実行するデータベースはデータベースユーザー作成と同様に、当該データベース
EXEC sp_addrolemember N'db_owner', N'user_name'

参考