sp_addrolemember (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

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

重要

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

Topic link iconTransact-SQL 構文表記規則

構文

sp_addrolemember [ @rolename = ] 'role', [ @membername = ] 'security_account'  

Note

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

引数

[ @rolename= ] 'role'
現在のデータベース内のデータベース ロールの名前です。 rolesysname であり、既定値はありません。

[ @membername= ] 'security_account'
ロールに追加されるセキュリティ アカウントです。 security_accountsysname で、既定値はありません。 security_account には、データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを指定できます。

リターン コードの値

0 (成功) または 1 (失敗)

解説

sp_addrolemember を使用してロールに追加されたメンバーは、ロールの権限を継承します。 新しいメンバーが、対応するデータベース ユーザーを持たない Windows レベルのプリンシパルである場合、データベース ユーザーが作成されますが、ログインに完全にマップされていない可能性があります。 ログインが存在し、そのログインがデータベースへのアクセス権を持っていることを必ず確認してください。

ロールには、ロール自体をメンバーとして含めることはできません。 このような "循環" 定義は、1 つ以上の中間メンバーシップを介して間接的にメンバーシップが与えられる場合でも無効です。

sp_addrolememberは、固定データベース ロール、固定サーバー ロール、または dbo をロールに追加できません。

sp_addrolemember は、メンバーをデータベース ロールに追加する場合にのみ使用します。 サーバー ロールにメンバーを追加するには、 sp_addsrvrolemember (Transact-SQL) を使用します。

アクセス許可

フレキシブル データベース ロールにメンバーを追加するには、次のいずれかが必要です。

  • 固定データベース ロールのdb_securityadminまたはdb_ownerメンバーシップ。

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

  • ロールに対する ALTER ANY ROLE 権限または ALTER 権限。

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

A. Windows ログインの追加

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

注意

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

USE AdventureWorks2012;  
GO  
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;  
GO  

B. データベース ユーザーの追加

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

EXEC sp_addrolemember 'Production', 'Mary5';  

例: Analytics Platform System (PDW)

C. Windows ログインの追加

次の例では、ログイン LoginMary をユーザーとしてデータベースに AdventureWorks2008R2 追加します UserMary。 その後、ユーザー UserMary がロールに Production 追加されます。

注意

ログイン LoginMary は AdventureWorks2012 データベースのデータベース ユーザー UserMary と呼ばれるため、ユーザー名 UserMary を指定する必要があります。 Mary5 のログインが存在しない場合、このステートメントは失敗します。 ログインとユーザーの名前は通常同じです。 この例では、異なる名前を使用して、ログインに影響を与えるアクションとユーザーを区別します。

-- Uses AdventureWorks  
  
CREATE USER UserMary FOR LOGIN LoginMary ;  
GO  
EXEC sp_addrolemember 'Production', 'UserMary'  

D. データベース ユーザーの追加

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

EXEC sp_addrolemember 'Production', 'UserMary'  

参照

セキュリティ ストアド プロシージャ (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
データベース レベルのロール