IS_SRVROLEMEMBER (Transact-SQL)IS_SRVROLEMEMBER (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Indica si en el inicio de sesión de SQL ServerSQL Server es miembro del rol de servidor especificado.Indicates whether a SQL ServerSQL Server login is a member of the specified server role.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )  

ArgumentosArguments

' role '' role '
Es el nombre del rol de servidor que se va comprobar.Is the name of the server role that is being checked. role es sysname.role is sysname.

Los valores válidos para role son los roles de servidor definidos por el usuario y los siguientes roles fijos de servidor:Valid values for role are user-defined server roles, and the following fixed server roles:

sysadminsysadmin serveradminserveradmin
dbcreatordbcreator setupadminsetupadmin
bulkadminbulkadmin securityadminsecurityadmin
diskadmindiskadmin Se aplica a: desde SQL Server 2012 (11.x)SQL Server 2012 (11.x) hasta SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

publicpublic
processadminprocessadmin

' login '' login '
Es el nombre del inicio de sesión de SQL ServerSQL Server que se va a comprobar.Is the name of the SQL ServerSQL Server login to check. login es de tipo sysname y su valor predeterminado es NULL.login is sysname, with a default of NULL. Si no se especifica ningún valor, el resultado se basa en el contexto de ejecución actual.If no value is specified, the result is based on the current Execution context. Si el parámetro contiene la palabra NULL, se devolverá NULL.If the parameter contains the word NULL will return NULL.

Tipos devueltosReturn Types

intint

Valor devueltoReturn value DescripciónDescription
00 login no es miembro del grupo role.login is not a member of role.

En Base de datos SQL de AzureAzure SQL Database, esta instrucción siempre devuelve 0.In Base de datos SQL de AzureAzure SQL Database, this statement always returns 0.
11 login es miembro del grupo role.login is a member of role.
NULLNULL role o login no son válidos o no tienen permiso para ver la pertenencia a roles.role or login is not valid, or you do not have permission to view the role membership.

NotasRemarks

Use IS_SRVROLEMEMBER para determinar si el usuario actual puede realizar una acción que necesite los permisos del rol de servidor.UseIS_SRVROLEMEMBER to determine whether the current user can perform an action requiring the server role's permissions.

Si se especifica un inicio de sesión de Windows, como Contoso\María5, para login, IS_SRVROLEMEMBER devuelve NULL, a menos que se haya concedido o denegado el acceso directo a SQL ServerSQL Server al inicio de sesión.If a Windows login, such as Contoso\Mary5, is specified for login, IS_SRVROLEMEMBER returns NULL, unless the login has been granted or denied direct access to SQL ServerSQL Server.

Si no se proporciona el parámetro login opcional y login es un inicio de sesión de dominio de Windows, puede ser un miembro del rol fijo de servidor mediante la pertenencia a un grupo de Windows.If the optional login parameter is not provided and if login is a Windows domain login, it may be a member of a fixed server role through membership in a Windows group. Para resolver estas pertenencias indirectas, IS_SRVROLEMEMBER solicita al controlador de dominio información sobre la pertenencia a grupos de Windows.To resolve such indirect memberships, IS_SRVROLEMEMBER requests Windows group membership information from the domain controller. Si no se puede tener acceso al controlador de dominio o este no responde, IS_ROLEMEMBER devuelve información sobre la pertenencia a roles teniendo en cuenta únicamente al usuario y sus grupos locales.If the domain controller is inaccessible or does not respond, IS_SRVROLEMEMBER returns role membership information by accounting for the user and its local groups only. Si el usuario especificado no es el usuario actual, el valor devuelto por IS_SRVROLEMEMBER podría diferir de la última actualización de datos del autenticador (por ejemplo, Active Directory) en SQL ServerSQL Server.If the user specified is not the current user, the value returned by IS_SRVROLEMEMBER might differ from the authenticator's (such as Active Directory) last data update to SQL ServerSQL Server.

Si se proporciona el parámetro de inicio de sesión opcional, el inicio de sesión de Windows que se consulta se debe encontrar en sys.server_principals o IS_SRVROLEMEMBER devolverá NULL.If the optional login parameter is provided, the Windows login that is being queried must be present in sys.server_principals, or IS_SRVROLEMEMBER will return NULL. Esto indica que el inicio de sesión no es válido.This indicates that the login is not valid.

Cuando el parámetro de inicio de sesión es un inicio de sesión del dominio o está basado en un grupo de Windows y el controlador de dominio no es accesible, se producirá un error en las llamadas a IS_SRVROLEMEMBER y podrían devolverse datos incorrectos o incompletos.When the login parameter is a domain login or based on a Windows group and the domain controller is inaccessible, calls to IS_SRVROLEMEMBER will fail and might return incorrect or incomplete data.

Si el controlador de dominio no está disponible, la llamada a IS_SRVROLEMEMBER devolverá la información precisa cuando se puede autenticar el principio de Windows localmente, como una cuenta de Windows local o un inicio de sesión SQL ServerSQL Server.If the domain controller is not available, the call to IS_SRVROLEMEMBER will return accurate information when the Windows principle can be authenticated locally, such as a local Windows account or a SQL ServerSQL Server login.

IS_SRVROLEMEMBER devuelve siempre 0 cuando se usa un grupo de Windows como el argumento de inicio de sesión y este grupo de Windows es un miembro de otro grupo de Windows que, a su vez, es miembro del rol de servidor especificado.IS_SRVROLEMEMBER always returns 0 when a Windows group is used as the login argument, and this Windows group is a member of another Windows group which is, in turn, a member of the specified server role.

El valor de Control de cuentas de usuario (UAC) también puede provocar que se devuelvan resultados diferentes.The User Account Control (UAC) setting might also cause the return different results. Esto dependería de si el usuario tuvo acceso al servidor como un miembro del grupo de Windows o como un usuario específico de SQL ServerSQL Server.This would depend on whether the user accessed the server as a Windows group member or as a specific SQL ServerSQL Server user.

Esta función evalúa la pertenencia al rol, no el permiso subyacente.This function evaluates role membership, not the underlying permission. Por ejemplo, el rol fijo de servidor sysadmin tiene el permiso CONTROL SERVER.For example, the sysadmin fixed server role has the CONTROL SERVER permission. Si el usuario tiene el permiso CONTROL SERVER pero pertenece al rol, esta función informará correctamente de que el usuario no es miembro del rol sysadmin, aunque tenga los mismos permisos.If the user has the CONTROL SERVER permission but is not a member of the role, this function will correctly report that the user is not a member of the sysadmin role, even though the user has the same permissions.

Para determinar si el usuario actual es miembro del grupo de Windows o del rol de base de datos de SQL ServerSQL Server especificados, use IS_MEMBER (Transact-SQL).To determine whether the current user is a member of the specified Windows group or SQL ServerSQL Server database role, use IS_MEMBER (Transact-SQL). Para determinar si un inicio de sesión de SQL ServerSQL Server es miembro de un rol de base de datos, use IS_ROLEMEMBER (Transact-SQL).To determine whether a SQL ServerSQL Server login is a member of a database role, use IS_ROLEMEMBER (Transact-SQL).

PermisosPermissions

Requiere el permiso VIEW DEFINITION en el rol de servidor.Requires VIEW DEFINITION permission on the server role.

EjemplosExamples

En el siguiente ejemplo se indica si el inicio de sesión de SQL ServerSQL Server para el usuario actual es miembro del rol fijo de servidor sysadmin.The following example indicates whether the SQL ServerSQL Server login for the current user is a member of the sysadmin fixed server role.

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.';  

En este ejemplo se indica si el inicio de sesión de dominio Pat es miembro del rol fijo de servidor diskadmin.The following example indicates whether the domain login Pat is a member of the diskadmin fixed server role.

SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');  

Consulte tambiénSee Also

IS_MEMBER (Transact-SQL) IS_MEMBER (Transact-SQL)
Funciones de seguridad (Transact-SQL)Security Functions (Transact-SQL)