対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
データベース ユーザー、データベース ロール、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 は 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をユーザー AdventureWorks2025としてMary5 データベースに追加します。 その後、ユーザー Mary5 が Production ロールに追加されます。
Contoso\Mary5 はデータベース Mary5 のデータベース ユーザー AdventureWorks2025 として設定されているので、ユーザー名 Mary5 を指定する必要があります。
Contoso\Mary5 ログインが存在しない限り、ステートメントは失敗します。 ドメインからのログインを使用してテストします。
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. データベース ユーザーを追加する
次の例では、データベース ユーザー Mary5 を現在のデータベースの Production データベース ロールに追加します。
EXECUTE sp_addrolemember 'Production', 'Mary5';
例: Analytics Platform System (PDW)
C: Windows ログインを追加する
次の例では、ログイン LoginMaryをユーザー AdventureWorks2025としてUserMary データベースに追加します。 その後、ユーザー UserMary が Production ロールに追加されます。
Note
ログイン LoginMaryは、UserMary データベースのデータベース ユーザー AdventureWorks2025と呼ばれるため、ユーザー名UserMaryを指定する必要があります。
Mary5 のログインが存在しない場合、このステートメントは失敗します。 通常、ログインとユーザーの名前は同じです。 この例では、異なる名前を使用して、ログインに影響するアクションとユーザーを区別します。
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXECUTE sp_addrolemember 'Production', 'UserMary';
D. データベース ユーザーを追加する
次の例では、データベース ユーザー UserMary を現在のデータベースの Production データベース ロールに追加します。
EXECUTE sp_addrolemember 'Production', 'UserMary';