Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Указывает, является ли текущий пользователь членом указанной группы Microsoft Windows, группы Microsoft Entra или роли базы данных SQL Server.
Функция IS_MEMBER поддерживается для групп Microsoft Entra. Один из случаев, когда IS_MEMBER не работает, является ли группа администратором Microsoft Entra для экземпляра SQL.
Соглашения о синтаксисе Transact-SQL
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Синтаксис
IS_MEMBER ( { 'group' | 'role' } )
Аргументы
'group'
Область применения: SQL Server 2008 (10.0.x) и более поздних версий
Имя проверяемой группы Windows или Microsoft Entra. Группа Windows должна находиться в формате группы доменов\. Аргумент group имеет тип sysname.
'role'
Имя проверяемой роли SQL Server. Аргумент role имеет тип sysname и может содержать предопределенные роли базы данных или пользовательские роли, но не роли сервера.
Типы возвращаемых данных
int
Замечания
Функция IS_MEMBER возвращает следующие значения.
| Возвращаемое значение | Description |
|---|---|
| 0 | Текущий пользователь не является членом группы или роли. |
| 1 | Текущий пользователь является членом группы group или роли role. |
| NULL | Недействителен либо группа, либо роль. При запросе имени входа 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 , даже если у пользователя есть те же разрешения.
Члены предопределенной роли сервера 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)