sp_addrolemember (Transact-SQL)

データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_addrolemember [ @rolename = ] 'role',
    [ @membername = ] 'security_account'

引数

  • [ @rolename= ] 'role'
    現在のデータベースのデータベース ロール名を指定します。role のデータ型は sysname で、既定値はありません。

  • [ @membername= ] 'security_account'
    ロールに追加するセキュリティ アカウントを指定します。security_account のデータ型は sysname で、既定値はありません。security_account にはデータベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを指定できます。

リターン コードの値

0 (成功) または 1 (失敗)

説明

sp_addrolemember を使用してロールに追加されたメンバーは、ロールの権限を継承します。新しいメンバーが Windows レベルのプリンシパルで、対応するデータベース ユーザーがない場合は、データベース ユーザーが作成されますが、ログインには完全にマップされない場合があります。ログインが存在し、そのログインがデータベースへのアクセス権を持っていることを必ず確認してください。

ロールには、ロール自体をメンバーとして含めることはできません。このような "循環" 定義は、1 つ以上の中間メンバーシップを介して間接的にメンバーシップが与えられる場合でも無効です。

sp_addrolemember では、固定データベース ロール、固定サーバー ロール、または dbo はロールに追加できません。ユーザー定義のトランザクション内では、sp_addrolemember は実行できません。

sp_addrolemember は、メンバーをデータベース ロールに追加する場合にのみ使用します。サーバー ロールにメンバーを追加するには、sp_addsrvrolemember (Transact-SQL) を使用します。

権限

データベース ユーザー定義ロールにメンバーを追加するには、次のいずれかが必要です。

  • db_securityadmin または db_owner 固定データベース ロールのメンバーシップ

  • ロールを所有するロールのメンバーシップ

  • ロールに対する ALTER ANY ROLE 権限または ALTER 権限

固定データベース ロールにメンバーを追加するには、db_owner 固定データベース ロールのメンバーシップが必要です。

A. Windows ログインを追加する

次の例では、Windows ログイン Contoso\Mary5 をユーザー Mary5 としてデータベース AdventureWorks2008R2 に追加した後、ユーザー Mary5 をロール Production に追加します。

注意

Contoso\Mary5 はデータベース AdventureWorks2008R2 のデータベース ユーザー Mary5 として設定されているので、ユーザー名 Mary5 を指定する必要があります。Contoso\Mary5 のログインが存在しない場合、このステートメントは失敗します。ドメインからのログインを使用してテストしてください。

USE AdventureWorks2008R2;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'

B. データベース ユーザーを追加する

次の例では、データベース ユーザー Mary5 を現在のデータベースのデータベース ロール Production に追加します。

EXEC sp_addrolemember 'Production', 'Mary5'