IS_MEMBER (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
現在のユーザーが、指定した Microsoft Windows グループ、Microsoft Entra グループ、または SQL Server データベース ロールのメンバーであるかどうかを示します。
IS_MEMBER関数は、Microsoft Entra グループでサポートされています。 IS_MEMBERが機能しない 1 つのケースは、グループが SQL インスタンスの Microsoft Entra 管理者である場合です。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
構文
IS_MEMBER ( { 'group' | 'role' } )
引数
' group '
適用対象: SQL Server 2008 (10.0.x) 以降
チェック対象の Windows または Microsoft Entra グループの名前を指定します。 Windows グループは、 Domain\Group の形式である必要があります。 グループ は sysnameです。
' role '
名前を指定します、 SQL Server チェックされるロールです。 ロール は sysname 、データベース ロールまたはユーザー定義のロールがサーバーの役割ではないの固定を含めることができます。
戻り値の型
int
解説
IS_MEMBER は、次の値を返します。
戻り値 | 説明 |
---|---|
0 | 現在のユーザーは、 group または role のメンバーではありません。 |
1 | 現在のユーザーのメンバーである グループ または ロール. |
NULL | group または role が無効です。 SQL Server ログインや、アプリケーション ロールを使用しているログインでクエリを実行した場合、Windows グループに対しては NULL が返されます。 |
IS_MEMBER は、Windows によって作成されたアクセス トークンを調べることによって Windows グループ メンバーシップを決定します。 アクセス トークンには、ユーザーが SQL Server のインスタンスに接続した後に行われるグループ メンバーシップの変更は反映されません。 Windows グループ メンバーシップは、SQL Server ログインまたは SQL Server アプリケーション ロールでは照会できません。
データベース ロールのメンバーを追加および削除するには、ALTER ROLE (Transact-SQL) を使用します。 データベース ロールのメンバーを追加および削除するには、ALTER SERVER ROLE (Transact-SQL) を使用します。
この関数で評価されるのはロールのメンバーシップであって、基になる権限ではありません。 たとえば、 db_owner 固定データベース ロールには、 CONTROL DATABASE 権限です。 ユーザーが CONTROL DATABASE アクセス許可を持っていてもロールのメンバーではない場合、この関数は、ユーザーが同じアクセス許可を持っていても、ユーザーが db_owner ロールのメンバーではないことを正しく報告します。
メンバー、 sysadmin を入力として、すべてのデータベースの固定サーバー ロール、 dbo ユーザーです。 メンバーに対するアクセス許可のチェック、 sysadmin 固定サーバー ロールのアクセス許可を確認する dbo, 、元のログインではありません。 dboはデータベース ロールに追加できないため、Windows グループには存在しません。dbo は常に 0 (ロールが存在しない場合は NULL) を返します。
関連する関数
別の 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)