基本的な考え方は、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'
参考