IS_SRVROLEMEMBER (Transact-SQL)
Указывает, является ли данное имя входа SQL Server 2005 членом указанной фиксированной серверной роли.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
IS_SRVROLEMEMBER ('role' [ , 'login' ] )
Аргументы
'role'
Имя серверной роли, проверяемой в данный момент. Аргумент role является переменной типа sysname.К допустимым значениям аргумента role относятся:
sysadmin
- dbcreator
- bulkadmin
- diskadmin
- processadmin
- serveradmin
- setupadmin
- securityadmin
- 'login'
Имя входа SQL Server 2005, которое необходимо проверить. Аргумент login имеет тип sysname и значение по умолчанию NULL. Если значение не указано, используется имя входа текущего пользователя SQL Server.
Типы возвращаемых данных
int
Замечания
Функция IS_SRVROLEMEMBER возвращает следующие значения.
Возвращаемое значение | Описание |
---|---|
0 |
Аргумент login не является членом аргумента role. |
1 |
Аргумент login является членом аргумента role. |
NULL |
Недопустимое значение аргумента role или аргумента login. |
С помощью данной функции определяется, может ли текущий пользователь выполнить действие, требующее разрешений серверной роли.
Если для аргумента login определено имя входа Microsoft Windows, например London\JoeB, то функция IS_SRVROLEMEMBER возвращает значение NULL в том случае, если имени входа не будет предоставлен или запрещен прямой доступ к SQL Server 2005.
Если в качестве имени входа используется имя входа для домена Windows, то оно может быть членом фиксированной серверной роли, будучи членом группы Windows. Чтобы решить проблему непрямого членства, функция IS_SRVROLEMEMBER запрашивает у контроллера домена сведения о членстве в группах Windows. Если контроллер домена недоступен или не отвечает, функция IS_SRVROLEMEMBER возвращает сведения о членстве в роли, принимая во внимание только учетную запись пользователя и локальные группы.
Примеры
В следующем примере показано, является ли имя входа SQL Server текущего пользователя членом фиксированной серверной роли sysadmin
.
IF IS_SRVROLEMEMBER ('sysadmin') = 1
print 'Current user''s login is a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') = 0
print 'Current user''s login is NOT a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') IS NULL
print 'ERROR: The server role specified is not valid.'
См. также
Справочник
IS_MEMBER (Transact-SQL)
Функции безопасности (Transact-SQL)