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.

Для добавления или удаления членов роли базы данных пользуйтесь инструкцией 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)