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_owner 固定データベース ロールのメンバシップ

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

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

  • ロールに対する ALTER 権限

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

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

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

注意注意

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

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

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

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

EXEC sp_addrolemember 'Production', 'Mary5'