IS_MEMBER (Transact-SQL)

現在のユーザーが、指定された Microsoft Windows グループまたは SQL Server データベース ロールのメンバーであるかどうかを示します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

IS_MEMBER ( { 'group' | 'role' } )

引数

  • ' group '
    確認する Windows グループの名前です。Domain\Group という形式にする必要があります。 group のデータ型は sysname です。

  • ' role '
    確認する SQL Server ロールの名前です。role は sysname であり、データベース固定ロールまたはユーザー定義ロールを含めることができますが、サーバー ロールを含めることはできません。

戻り値の型

int

説明

IS_MEMBER は、次の値を返します。

戻り値

説明

0

現在のユーザーは、group または role のメンバーではありません。

1

現在のユーザーは、group または role のメンバーです。

NULL

group または role が無効です。 SQL Server ログインや、アプリケーション ロールを使用しているログインでクエリを実行した場合、Windows グループに対しては NULL が返されます。

IS_MEMBER は、Windows によって作成されたアクセス トークンを調べることによって Windows グループ メンバーシップを決定します。 アクセス トークンは、ユーザーが SQL Server のインスタンスに接続した後に行われたグループ メンバーシップ内の変更を反映しません。SQL Server ログインや SQL Server アプリケーション ロールで Windows グループのメンバーシップをクエリすることはできません。

データベース ロールのメンバーを追加または削除するには、ALTER ROLE (Transact-SQL) を使用します。 サーバー ロールのメンバーを追加または削除するには、ALTER SERVER ROLE (Transact-SQL) を使用します。

この関数で評価されるのはロールのメンバーシップであって、基になる権限ではありません。 たとえば、db_owner 固定データベース ロールには、CONTROL DATABASE 権限があります。 CONTROL DATABASE 権限を持っていても、db_owner ロールに所属していなければ、そのユーザーはロールのメンバーではないと、この関数によって正確に報告されます。そのロールと同じ権限をユーザーが持っているとしても結果は変わりません。

関連する関数

別の SQL Server ログインが、データベース ロールのメンバーであるかどうかを判断するには、IS_ROLEMEMBER (Transact-SQL) を使用します。 SQL Server ログインが、サーバー ロールのメンバーであるかどうかを判断するには、IS_SRVROLEMEMBER (Transact-SQL) を使用します。

使用例

次の例は、現在のユーザーがデータベース ロールまたは Windows ドメイン グループのメンバーであるかどうかを確認します。

-- Test membership in db_owner and print appropriate message.
IF IS_MEMBER ('db_owner') = 1
   PRINT 'Current user is a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') = 0
   PRINT 'Current user is NOT a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') IS NULL
   PRINT 'ERROR: Invalid group / role specified'
GO

-- Execute SELECT if user is a member of ADVWORKS\Shipping.
IF IS_MEMBER ('ADVWORKS\Shipping') = 1
   SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.' 
GO

関連項目

参照

IS_SRVROLEMEMBER (Transact-SQL)

セキュリティ カタログ ビュー (Transact-SQL)

セキュリティ関数 (Transact-SQL)

概念

プリンシパル (データベース エンジン)