IS_MEMBER (Transact-SQL)IS_MEMBER (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

現在のユーザーが、指定された MicrosoftMicrosoft Windows グループまたは SQL ServerSQL Server データベース ロールのメンバーであるかどうかを示します。Indicates whether the current user is a member of the specified MicrosoftMicrosoft Windows group or SQL ServerSQL Server database role. IS_MEMBER 関数は、Azure Active Directory グループに対してはサポートされません。The IS_MEMBER function is not supported for Azure Active Directory Groups.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

' group '' group '
適用対象: SQL Server 2008SQL Server 2008 以降Applies to: SQL Server 2008SQL Server 2008 and later

確認する Windows グループの名前です。Domain\Group という形式にする必要があります。Is the name of the Windows group that is being checked; must be in the format Domain\Group. グループsysnameです。group is sysname.

' role '' role '
名前を指定します、 SQL ServerSQL Server チェックされるロールです。Is the name of the SQL ServerSQL Server role that is being checked. ロールsysname 、データベース ロールまたはユーザー定義のロールがサーバーの役割ではないの固定を含めることができます。role is sysname and can include the database fixed roles or user-defined roles, but not server roles.

戻り値の型Return Types

intint

解説Remarks

IS_MEMBER は、次の値を返します。IS_MEMBER returns the following values.

戻り値Return value 説明Description
00 現在のユーザーがのメンバーではない グループ または ロール.Current user is not a member of group or role.
11 現在のユーザーのメンバーである グループ または ロール.Current user is a member of group or role.
NULLNULL group または role のどちらかが無効です。Either group or role is not valid. SQL ServerSQL Server ログインや、アプリケーション ロールを使用しているログインでクエリを実行した場合、Windows グループに対しては NULL が返されます。When queried by a SQL ServerSQL Server login or a login using an application role, returns NULL for a Windows group.

IS_MEMBER は、Windows によって作成されたアクセス トークンを調べることによって Windows グループ メンバーシップを決定します。IS_MEMBER determines Windows group membership by examining an access token that is created by Windows. アクセス トークンは、ユーザーが SQL ServerSQL Server のインスタンスに接続した後に行われたグループ メンバーシップ内の変更を反映しません。The access token does not reflect changes in group membership that are made after a user connects to an instance of SQL ServerSQL Server. SQL ServerSQL Server ログインや SQL ServerSQL Server アプリケーション ロールで Windows グループのメンバーシップをクエリすることはできません。Windows group membership cannot be queried by a SQL ServerSQL Server login or a SQL ServerSQL Server application role.

データベース ロールのメンバーを追加および削除するには、ALTER ROLE (Transact-SQL) を使います。To add and remove members from a database role, use ALTER ROLE (Transact-SQL). 追加し、サーバー ロールからメンバーを削除するには、を使用 ALTER SERVER ROLE (Transact-SQL).To add and remove members from a server role, use ALTER SERVER ROLE (Transact-SQL).

この関数で評価されるのはロールのメンバーシップであって、基になる権限ではありません。This function evaluates role membership, not the underlying permission. たとえば、 db_owner 固定データベース ロールには、 CONTROL DATABASE 権限です。For example, the db_owner fixed database role has the CONTROL DATABASE permission. ユーザーがいる場合、 CONTROL DATABASE 権限はない、ロールのメンバーと、この関数は、ユーザーがのメンバーではないことを報告して正しく、 db_owner ロールでは、ユーザーは、同じアクセス許可を持っている場合でもです。If the user has the CONTROL DATABASE permission but is not a member of the role, this function will correctly report that the user is not a member of the db_owner role, even though the user has the same permissions.

メンバー、 sysadmin を入力として、すべてのデータベースの固定サーバー ロール、 dbo ユーザーです。Members of the sysadmin fixed server role enter every database as the dbo user. メンバーに対するアクセス許可のチェック、 sysadmin 固定サーバー ロールのアクセス許可を確認する dbo, 、元のログインではありません。Checking permission for member of the sysadmin fixed server role, checks permissions for dbo, not the original login. dbo データベース ロールに追加することはできずに、Windows グループが存在しない dbo は常に 0 (または、ロールが存在しない場合は NULL) を返します。Since dbo can't be added to a database role and doesn't exist in Windows groups, dbo will always return 0 (or NULL if the role doesn't exist).

別のかを判断する SQL ServerSQL Server を使用してログインがデータベース ロールのメンバーを IS_ROLEMEMBER (Transact-SQL).To determine whether another SQL ServerSQL Server login is a member of a database role, use IS_ROLEMEMBER (Transact-SQL). 確認するかどうか、 SQL ServerSQL Server を使用してログインがサーバー ロールのメンバーを IS_SRVROLEMEMBER (Transact-SQL).To determine whether a SQL ServerSQL Server login is a member of a server role, use IS_SRVROLEMEMBER (Transact-SQL).

Examples

次の例は、現在のユーザーがデータベース ロールまたは Windows ドメイン グループのメンバーであるかどうかを確認します。The following example checks whether the current user is a member of a database role or a Windows domain group.

-- 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  

参照See Also

IS_SRVROLEMEMBER (Transact-SQL) IS_SRVROLEMEMBER (Transact-SQL)
プリンシパル (データベース エンジン) Principals (Database Engine)
セキュリティ カタログ ビュー (Transact-SQL) Security Catalog Views (Transact-SQL)
セキュリティ関数 (Transact-SQL)Security Functions (Transact-SQL)