共用方式為


IS_MEMBER (Transact-SQL)

指出目前使用者是指定之 Microsoft Windows 群組或 SQL Server 資料庫角色的成員。

適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。

主題連結圖示 Transact-SQL 語法慣例

語法

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

引數

  • ' group '

    適用於:SQL Server 2008 至 SQL Server 2014。

    這是所檢查之 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 應用程式角色進行查詢。

若要在資料庫角色中加入和移除成員,請使用 ALTER ROLE (Transact-SQL)。 若要在伺服器角色中加入和移除成員,請使用 ALTER SERVER ROLE (Transact-SQL)

這個函數會評估角色成員資格,而非基礎權限。 例如,db_owner 固定資料庫角色擁有 CONTROL DATABASE 權限。 如果使用者擁有 CONTROL DATABASE 權限,但不是此角色的成員,這個函數將正確回報該使用者不是 db_owner 角色的成員,即使該使用者擁有相同的權限也一樣。

相關函數

若要判斷另一個 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)

概念

主體 (Database Engine)