sp_addrolemember (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

重要

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

Transact-SQL 構文表記規則

構文

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 (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 ステートメントは失敗します。 doメイン からのログインを使用してテストします。

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 追加されます。

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'