IS_MEMBER (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
現在のユーザーが、指定した Microsoft Windows グループ、Microsoft Entra グループ、または SQL Server データベース ロールのメンバーであるかどうかを示します。
IS_ME MB (メガバイト)ER 関数は、Microsoft Entra グループでサポートされています。 IS_ME MB (メガバイト)ER が機能しない 1 つのケースは、グループが SQL インスタンスの Microsoft Entra 管理者である場合です。
Note
Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) と呼ばれていました。
構文
IS_MEMBER ( { 'group' | 'role' } )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
'group'
適用対象: SQL Server 2008 (10.0.x) 以降
チェックされている Windows または Microsoft Entra グループの名前です。 Windows グループは Doメイン\Group の形式である必要があります。 グループ は sysnameです。
'role'
名前を指定します、 SQL Server チェックされるロールです。 ロール は sysname 、データベース ロールまたはユーザー定義のロールがサーバーの役割ではないの固定を含めることができます。
戻り値の型
int
解説
IS_MEMBER は、次の値を返します。
戻り値 | 説明 |
---|---|
0 | 現在のユーザーは、グループまたはロールのメンバーではありません。 |
1 | 現在のユーザーのメンバーである グループ または ロール. |
NULL | グループまたはロールが無効です。 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 DATABA Standard Edition アクセス許可を持っていてもロールのメンバーではない場合、この関数は、ユーザーが同じアクセス許可を持っていても、ユーザーが 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)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示