Поделиться через


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 или имени, использующего роль приложения, возвращает NULL для группы Windows.

Функция 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