sp_addrolemember (Transact-SQL)sp_addrolemember (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。Adds a database user, database role, Windows login, or Windows group to a database role in the current database.

重要

この機能は、Microsoft SQL Server の将来のバージョンで削除されます。This feature will be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature. 代わりに ALTER ROLE を使用してください。Use ALTER ROLE instead.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

注意

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。This syntax is not supported by serverless SQL pool in Azure Synapse Analytics.

引数Arguments

[ @rolename =] 'role'[ @rolename= ] 'role'
現在のデータベースのデータベースロールの名前を指定します。Is the name of the database role in the current database. rolesysname で、既定値はありません。role is a sysname, with no default.

[ @membername =] 'security_account'[ @membername= ] 'security_account'
ロールに追加するセキュリティアカウントを示します。Is the security account being added to the role. security_accountsysname であり、既定値はありません。security_account is a sysname, with no default. security_account には、データベースユーザー、データベースロール、windows ログイン、または windows グループを指定できます。security_account can be a database user, database role, Windows login, or Windows group.

リターン コードの値Return Code Values

0 (成功) または 1 (失敗)0 (success) or 1 (failure)

解説Remarks

sp_addrolemember を使用してロールに追加されたメンバーは、ロールの権限を継承します。A member added to a role by using sp_addrolemember inherits the permissions of the role. 新しいメンバーが、対応するデータベースユーザーのない Windows レベルのプリンシパルである場合は、データベースユーザーが作成されますが、そのログインに完全にマップされていない可能性があります。If the new member is a Windows-level principal without a corresponding database user, a database user will be created but may not be fully mapped to the login. ログインが存在し、そのログインがデータベースへのアクセス権を持っていることを必ず確認してください。Always check that the login exists and has access to the database.

ロールには、ロール自体をメンバーとして含めることはできません。A role cannot include itself as a member. このような "循環" 定義は、1 つ以上の中間メンバーシップを介して間接的にメンバーシップが与えられる場合でも無効です。Such "circular" definitions are not valid, even when membership is only indirectly implied by one or more intermediate memberships.

固定データベースロール、固定サーバーロール、または dbo をロールに追加 sp_addrolemember ことはできません。sp_addrolemember cannot add a fixed database role, fixed server role, or dbo to a role.

sp_addrolemember は、メンバーをデータベース ロールに追加する場合にのみ使用します。Only use sp_addrolemember to add a member to a database role. サーバーロールにメンバーを追加するには、 sp_addsrvrolemember (transact-sql)を使用します。To add a member to a server role, use sp_addsrvrolemember (Transact-SQL).

アクセス許可Permissions

柔軟なデータベースロールにメンバーを追加するには、次のいずれかが必要です。Adding members to flexible database roles requires one of the following:

  • Db_securityadmin または db_owner 固定データベースロールのメンバーシップ。Membership in the db_securityadmin or db_owner fixed database role.

  • ロールを所有するロールのメンバーシップMembership in the role that owns the role.

  • ロールに対する ALTER ANY role 権限または alter 権限。ALTER ANY ROLE permission or ALTER permission on the role.

固定データベースロールにメンバーを追加するには、db_owner 固定データベースロールのメンバーシップが必要です。Adding members to fixed database roles requires membership in the db_owner fixed database role.

Examples

A.A. Windows ログインの追加Adding a Windows login

次の例では、Windows ログイン Contoso\Mary5AdventureWorks2012 ユーザーとしてデータベースに追加し Mary5 ます。The following example adds the Windows login Contoso\Mary5 to the AdventureWorks2012 database as user Mary5. その後、ユーザー Mary5 がロールに追加され Production ます。The user Mary5 is then added to the Production role.

注意

Contoso\Mary5 はデータベース AdventureWorks2012AdventureWorks2012 のデータベース ユーザー Mary5 として設定されているので、ユーザー名 Mary5 を指定する必要があります。Because Contoso\Mary5 is known as the database user Mary5 in the AdventureWorks2012AdventureWorks2012 database, the user name Mary5 must be specified. Contoso\Mary5 のログインが存在しない場合、このステートメントは失敗します。The statement will fail unless a Contoso\Mary5 login exists. ドメインからのログインを使用してテストします。Test by using a login from your domain.

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

B.B. データベースユーザーの追加Adding a database user

次の例では、データベースユーザーを Mary5 現在のデータベースのデータベースロールに追加し Production ます。The following example adds the database user Mary5 to the Production database role in the current database.

EXEC sp_addrolemember 'Production', 'Mary5';  

例: Parallel Data WarehouseParallel Data WarehouseExamples: Parallel Data WarehouseParallel Data Warehouse

C.C. Windows ログインの追加Adding a Windows login

次の例では、ログインを LoginMary AdventureWorks2008R2 ユーザーとしてデータベースに追加し UserMary ます。The following example adds the login LoginMary to the AdventureWorks2008R2 database as user UserMary. その後、ユーザー UserMary がロールに追加され Production ます。The user UserMary is then added to the Production role.

注意

ログイン LoginMary はデータベースのデータベースユーザーとして知られているので、 UserMary AdventureWorks2012AdventureWorks2012 ユーザー名を UserMary 指定する必要があります。Because the login LoginMary is known as the database user UserMary in the AdventureWorks2012AdventureWorks2012 database, the user name UserMary must be specified. Mary5 のログインが存在しない場合、このステートメントは失敗します。The statement will fail unless a Mary5 login exists. 通常、ログインとユーザーの名前は同じです。Logins and users usually have the same name. この例では、ログインとユーザーに影響するアクションを区別するために、異なる名前を使用しています。This example uses different names to differentiate the actions affecting the login vs. the user.

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

D.D. データベースユーザーの追加Adding a database user

次の例では、データベースユーザーを UserMary 現在のデータベースのデータベースロールに追加し Production ます。The following example adds the database user UserMary to the Production database role in the current database.

EXEC sp_addrolemember 'Production', 'UserMary'  

関連項目See Also

セキュリティ ストアド プロシージャ (Transact-SQL) Security Stored Procedures (Transact-SQL)
sp_addsrvrolemember (Transact-SQL) sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-sql) sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL) sp_grantdbaccess (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL) System Stored Procedures (Transact-SQL)
データベース レベルのロールDatabase-Level Roles