IS_MEMBER (Transact-SQL)
現在のユーザーが指定された Microsoft Windows グループまたは SQL Server データベース ロールのメンバーであるかどうかを示します。
構文
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 グループのメンバーシップを照会することはできません。
この関数は、元になる権限ではなくロールのメンバーシップを評価します。たとえば、db_owner 固定データベース ロールには、CONTROL DATABASE 権限があります。CONTROL DATABASE 権限を持つユーザーがこのロールのメンバーではない場合、この関数はユーザーが同じ権限を持っていても db_owner ロールのメンバーではないことを正しく報告します。
例
次の例では、現在のユーザーがデータベース ロールまたは 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