sp_addrolemember (Transact-SQL)

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

重要な注意事項重要

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに ALTER ROLE を使用してください。

トピック リンク アイコン 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 としてデータベース 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)

システム ストアド プロシージャ (Transact-SQL)

データベース レベルのロール