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