次の方法で共有


CREATE ROLE (Transact-SQL)

現在のデータベースに新しいデータベース ロールを作成します。

トピック リンク アイコン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 権限が必要です。AUTHORIZATION オプションを使用する場合は、次の権限も必要です。

  • ロールの所有権を別のユーザーに割り当てるには、そのユーザーに対する IMPERSONATE 権限が必要です。

  • ロールの所有権を別のロールに割り当てるには、割り当て先のロールのメンバシップまたはそのロールに対する ALTER 権限が必要です。

  • ロールの所有権をアプリケーション ロールに割り当てるには、アプリケーション ロールに対する ALTER 権限が必要です。

A. データベース ユーザーが所有するデータベース ロールを作成する

次の例では、ユーザー BenMiller が所有するデータベース ロール buyers を作成します。

USE AdventureWorks;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO

B. 固定データベース ロールが所有するデータベース ロールを作成する

次の例では、固定データベース ロール db_securityadmin が所有するデータベース ロール auditors を作成します。

USE AdventureWorks;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO