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 所建立的存取 Token 來判斷 Windows 群組成員資格。存取 Token 不會反映在使用者連接到 SQL Server 執行個體之後,所進行的群組成員資格變更。Windows 群組成員資格無法透過 SQL Server 登入或 SQL Server 應用程式角色進行查詢。

這個函數會評估角色成員資格,而不是基礎權限。例如,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