次の方法で共有


sp_addrolemember (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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'

現在のデータベースのデータベース ロールの名前。 @rolenamesysname で、既定値はありません。

[ @membername = ] N'membername'

ロールに追加されるセキュリティ アカウント。 @membernamesysname で、既定値はありません。 @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をユーザー Mary5としてAdventureWorks2022 データベースに追加します。 その後、ユーザー Mary5Production ロールに追加されます。

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 データベースに追加します。 その後、ユーザー UserMaryProduction ロールに追加されます。

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'