IS_MEMBER (Transact-SQL)
指示当前用户是否为指定 Microsoft Windows 组或 SQL Server 数据库角色的成员。
语法
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 创建的访问标记来确定 Windows 组成员身份。该访问标记不反映在用户连接到 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