sp_addrolemember (Transact-SQL)
データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。
構文
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'