CREATE ROLE (Transact-SQL)
現在のデータベースに新しいデータベース ロールを作成します。
構文
CREATE ROLE role_name [ AUTHORIZATION owner_name ]
引数
role_name
作成するロールの名前を指定します。AUTHORIZATION owner_name
新しいロールを所有するデータベース ユーザーまたはロールを指定します。ユーザーを指定しない場合、ロールは CREATE ROLE を実行するユーザーが所有します。
説明
ロールはデータベース レベルのセキュリティ保護可能なリソースです。ロールを作成した後は、GRANT、DENY、および REVOKE を使って、ロールのデータベース レベルの権限を構成します。データベース ロールにメンバーを追加するには、sp_addrolemember ストアド プロシージャを使用します。詳細については、「データベース レベルのロール」を参照してください。
データベース ロールは、sys.database_role_members カタログ ビューと sys.database_principals カタログ ビューで参照できます。
注意 |
---|
SQL Server 2005 からスキーマの動作が変更されました。その結果、スキーマがデータベース ユーザーと同じであると想定しているコードでは、正しい結果が返されない場合があります。CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION のいずれかの DDL ステートメントが使用されたことのあるデータベースでは、sysobjects などの古いカタログ ビューを使用しないでください。そのようなデータベースでは、代わりに新しいカタログ ビューを使用してください。新しいカタログ ビューでは、SQL Server 2005 で導入されたプリンシパルとスキーマの分離が考慮されます。カタログ ビューの詳細については、「カタログ ビュー (Transact-SQL)」を参照してください。 |
権限
データベースに対する CREATE ROLE 権限または db_securityadmin 固定データベース ロールのメンバーシップが必要です。AUTHORIZATION オプションを使用する場合は、次の権限も必要です。
ロールの所有権を別のユーザーに割り当てるには、そのユーザーに対する IMPERSONATE 権限が必要です。
ロールの所有権を別のロールに割り当てるには、割り当て先のロールのメンバーシップまたはそのロールに対する ALTER 権限が必要です。
ロールの所有権をアプリケーション ロールに割り当てるには、アプリケーション ロールに対する ALTER 権限が必要です。
使用例
A. データベース ユーザーが所有するデータベース ロールを作成する
次の例では、ユーザー BenMiller が所有するデータベース ロール buyers を作成します。
USE AdventureWorks2008R2;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO
B. 固定データベース ロールが所有するデータベース ロールを作成する
次の例では、固定データベース ロール db_securityadmin が所有するデータベース ロール auditors を作成します。
USE AdventureWorks2008R2;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO