SQL Azureデータベースにユーザを追加する

Adding Users to Your SQL Azure Database – SQL Azure Team Blog – Site Home – MSDN Blogsを簡単に翻訳し紹介したエントリーです。

SQL Azure Portalを使用して、SQL Azureサーバを作成したとき、同時にユーザ名とパスワードを作成します。サーバ上の全データベースにアクセスすることができる管理者アカウントです。しかし、サーバ上の全て、もしくは一部のDBに他の人にも、フル権限または一部権限で、アクセスして欲しいと思うことがあります。このエントリーでは、SQL Azureデータベースに対してユーザアカウントを追加する方法を紹介します。

今のところ、SQL Azure Portalで、管理者アカウントを追加することはできません。追加するにはTransact-SQLを使用する必要があります。SQL Server Management Studio 2008 R2を使用してSQL AzureにTransact-SQLを実行します。SQL Server Management Studio 2008 R2はSQL Azureデータベースのユーザとログインを一覧で表示しますが、ユーザとログイン作成のGUIは提供されていません。

一覧には、ユーザーとログインが表示されている。

vs04

 

プロパティ的なメニューが表示されない。GUIでの操作方法を今のところ提供されていない。

vs05

 

ログインを作成する

 

ログインは、パスワードとログイン(ID)ペアになっており、全てのデータベースに同じパスワードでアクセスすることができます。ログインを作成するTransact-SQLは次のようなものです。

CREATE LOGIN readonlylogin WITH password='1231!#ASDF!a';

CREATE LOGINコマンドを実行するには、SQL Azureのマスターデータベースに(SQL Azure Portalで作成した)管理者アカウントで接続しなければなりません。

 

ユーザを作成する

 

ユーザは、データベスに対して作成し、ログインと紐付けます。ユーザを作成するデータベースに対して接続しなければなりません。多くの場合、マスターデータベース以外に接続することになります。ユーザを作成するTransact-SQLは次の用になります。

CREATE USER readonlyuser FROM LOGIN readonlylogin;

 

ユーザ権限

 

ユーザを作成した直後は、データベースに接続する権限はありません。アクセスする為の権限を付与する必要があります。次のTransact-SQLは、ユーザ「readonlyuser」に対して、データベース読み取り権限をdb_datareaderロールを使用して付与します。

EXEC sp_addrolemember 'db_datareader', 'readonlyuser';

 

ユーザとログインを削除する

 

幸い、SQL Server Management Studio 2008 R2はユーザとログインを削除することができます。オブジェクトエクスプローラーのツリーからセキュリティーノードを見つけます。ユーザまたはログインで右クリックをし、削除を選択します。

vs06

 

補足情報

 

SQL AzureはUSE文を使用することができません。これは、一つのスクリプトで、ログインとユーザを作成することができないことを意味しています。CREATE LOGIN と CREATE USERを実行するにはぞれぞれデータベースに接続詞直さなければなりません。

詳細は、Managing Databases and Logins in SQL Azureを確認してください。