sp_addrolemember (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

重要

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

Transact-SQL 構文表記規則

構文

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

Note

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

引数

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

[ @membername= ] 'security_account'
ロールに追加されるセキュリティ アカウントです。 security_accountは sysname であり、既定値はありません。 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 をユーザーとしてデータベースに AdventureWorks2022 追加します Mary5。 その後、ユーザー Mary5 がロールに Production 追加されます。

注意

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

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

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

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

EXEC sp_addrolemember 'Production', 'Mary5';  

例: Analytics Platform System (PDW)

.C Windows ログインの追加

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

注意

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

-- Uses AdventureWorks2022
  
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)
データベース レベルのロール