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 グループを指定できます。
解説
sp_addrolemember を使用してロールに追加されたメンバは、ロールの権限を継承します。新しいメンバが Windows レベルのプリンシパルで、対応するデータベース ユーザーがない場合は、データベース ユーザーが作成されます。
ロールには、ロール自体をメンバとして含めることはできません。このような "循環" 定義は、1 つ以上の中間メンバシップを介して間接的にメンバシップが与えられる場合でも無効です。
sp_addrolemember では、固定データベース ロール、固定サーバー ロール、または dbo をロールに追加できません。SQL Server Serivce Pack 1 より前のバージョンでは、sp_addrolemember はユーザー定義のトランザクション内では実行できません。
sp_addrolemember は、メンバをデータベース ロールに追加する場合にのみ使用します。サーバー ロールにメンバを追加するには、sp_addsrvrolemember (Transact-SQL) を使用します。
柔軟なロールを固定ロールのメンバとして追加しないでください。このようなロールを追加すると、意図しない権限のエスカレーションが有効になることがあります。
権限
メンバを柔軟なデータベース ロールに追加する場合は、次のいずれかが必要です。
- db_owner 固定データベース ロールのメンバシップ
- db_securityadmin 固定データベース ロールのメンバシップ
- ロールを所有するロールのメンバシップ
- ロールに対する ALTER 権限
固定データベース ロールにメンバを追加するには、db_owner 固定データベース ロールのメンバシップが必要です。
戻り値
0 (成功) または 1 (失敗)
例
A. Windows ログインを追加する
次の例では、Windows ログイン Contoso\Mary5
を
ユーザー Mary5
として AdventureWorks
データベースに追加します。ユーザー Mary5
は、その後 Production
に追加されます。
メモ : |
---|
Contoso\Mary5 は AdventureWorks データベースのデータベース ユーザー Mary5 として設定されているので、sp_addrolemember を使用してユーザー名 Mary5 を指定する必要があります。 |
USE AdventureWorks
GO
EXEC sp_grantdbaccess 'Contoso\Mary5', '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)
システム ストアド プロシージャ (Transact-SQL)