sp_addrolemember (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

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

重要

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

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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

注意

この構文は、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 は、メンバーをデータベース ロールに追加する場合にのみ使用します。 サーバー ロールにメンバーを追加するには、Transact-SQL sp_addsrvrolemember (を使用)。

アクセス許可

柔軟なデータベース ロールにメンバーを追加するには、次のいずれかを行う必要があります。

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

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

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

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

A. Windows ログインの追加

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

注意

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

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

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

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

EXEC sp_addrolemember 'Production', 'Mary5';  

例: Parallel Data Warehouse

C. Windows ログインの追加

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

注意

ログイン LoginMary はデータベースのデータベースユーザーとして知られているので、 UserMary AdventureWorks2012 ユーザー名を 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)
データベース レベルのロール