sp_addrolemember (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER ROLE を使用してください。
構文
sp_addrolemember
[ @rolename = ] N'rolename'
, [ @membername = ] N'membername'
[ ; ]
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
引数
[ @rolename = ] N'rolename'
現在のデータベースのデータベース ロールの名前。 @rolename は sysname で、既定値はありません。
[ @membername = ] N'membername'
ロールに追加されるセキュリティ アカウント。 @membername は sysname で、既定値はありません。 @membername には、データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを指定できます。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_addrolemember
を使用してロールに追加されたメンバーは、ロールのアクセス許可を継承します。 新しいメンバーが、対応するデータベース ユーザーなしで Windows レベルのプリンシパルである場合、データベース ユーザーが作成されますが、ログインに完全にマップされていない可能性があります。 ログインが存在し、そのログインがデータベースへのアクセス権を持っていることを必ず確認してください。
ロール自体をメンバーとして含めることはできません。 このような 円形 定義は、メンバーシップが 1 つ以上の中間メンバーシップによって間接的に暗示されている場合でも有効ではありません。
sp_addrolemember
では、固定データベース ロール、固定サーバー ロール、または dbo をロールに追加できません。
データベース ロールにメンバーを追加するには、 sp_addrolemember
のみを使用します。 サーバー ロールにメンバーを追加するには、 sp_addsrvrolememberを使用します。
アクセス許可
フレキシブル データベース ロールにメンバーを追加するには、次のいずれかのアクセス許可が必要です。
db_securityadminまたは固定データベース ロールdb_ownerメンバーシップ。
ロールを所有するロールのメンバーシップ
ALTER ANY ROLE
ロールに対するアクセス許可またはALTER
アクセス許可。
固定データベース ロールにメンバーを追加するには、固定データベース ロール db_owner メンバーシップが必要です。
例
A. Windows ログインを追加する
次の例では、Windows ログイン Contoso\Mary5
をユーザー Mary5
としてAdventureWorks2022
データベースに追加します。 その後、ユーザー 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
をユーザー UserMary
としてAdventureWorks2022
データベースに追加します。 その後、ユーザー UserMary
が Production
ロールに追加されます。
Note
ログイン 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'