sp_addrolemember (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。
重要
この機能は、Microsoft SQL Server の将来のバージョンで削除されます。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER ROLE を使用してください。
構文
sp_addrolemember [ @rolename = ] 'role', [ @membername = ] 'security_account'
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
引数
[ @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_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)
データベース レベルのロール
フィードバック
フィードバックの送信と表示