sp_addrolemember (Transact-SQL)
データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。
重要 |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに ALTER ROLE を使用してください。 |
構文
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 としてデータベース AdventureWorks2012 に追加した後、 ユーザー Mary5 をロール Production に追加します。
注 |
---|
Contoso\Mary5 はデータベース AdventureWorks2012 のデータベース ユーザー Mary5 として設定されているので、ユーザー名 Mary5 を指定する必要があります。 Contoso\Mary5 のログインが存在しない場合、このステートメントは失敗します。 ドメインからのログインを使用してテストしてください。 |
USE AdventureWorks2012;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'
B. データベース ユーザーを追加する
次の例では、データベース ユーザー Mary5 を現在のデータベースのデータベース ロール Production に追加します。
EXEC sp_addrolemember 'Production', 'Mary5'
関連項目
参照
セキュリティ ストアド プロシージャ (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)