IS_MEMBER (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

Microsoft Entra 群組支援IS_MEMBER函式。 如果群組是 SQL 實例的 Microsoft Entra 系統管理員,則IS_MEMBER無法運作的其中一個案例。

Transact-SQL 語法慣例

注意

Microsoft Entra 標識符 先前稱為 Azure Active Directory (Azure AD)。

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

'group'
適用於:SQL Server 2008 (10.0.x) 與更新版本

這是正在檢查的 Windows 或 Microsoft Entra 群組名稱。 Windows 群組的格式必須是網域\群組。 groupsysname

'role'
這是要檢查的 SQL Server 角色名稱。 rolesysname,而且可以包含資料庫固定角色或使用者定義角色,但無法包含伺服器角色。

傳回型別

int

備註

IS_MEMBER 會傳回下列值。

傳回值 描述
0 目前使用者不是群組角色的成員
1 目前使用者是 grouprole 的成員。
NULL 群組角色無效。 由 SQL Server 登入或使用應用程式角色的登入進行查詢時,針對 Windows 群組傳回 NULL。

IS_MEMBER 會檢查 Windows 所建立的存取 Token 來判斷 Windows 群組成員資格。 存取令牌不會反映用戶在連線到 SQL Server 實例之後所做的群組成員資格變更。 SQL Server 登入或 SQL Server 應用程式角色無法查詢 Windows 群組成員資格。

若要從資料庫角色中新增及移除成員,請使用 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)