sys.fn_my_permissions (Transact-SQL)sys.fn_my_permissions (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Devuelve una lista de los permisos concedidos a la entidad de seguridad para un elemento protegible.Returns a list of the permissions effectively granted to the principal on a securable. Una función relacionada es HAS_PERMS_BY_NAME.A related function is HAS_PERMS_BY_NAME.

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

SintaxisSyntax

  
fn_my_permissions ( securable , 'securable_class' )  

ArgumentosArguments

securablesecurable
Es el nombre del elemento protegible.Is the name of the securable. Si el elemento protegible es el servidor o una base de datos, este valor debe establecerse en NULL.If the securable is the server or a database, this value should be set to NULL. securable es una expresión escalar de tipo sysname.securable is a scalar expression of type sysname. elemento protegible puede ser un nombre de varias partes.securable can be a multipart name.

'securable_class''securable_class'
Es el nombre de la clase de protegible cuyos permisos se muestran.Is the name of the class of securable for which permissions are listed. securable_class es un sysname.securable_class is a sysname. securable_class debe ser uno de los siguientes: rol de aplicación, ENSAMBLADO, clave ASIMÉTRICA, certificado, contrato, base de datos, ENDPOINT, FULLTEXT CATALOG, inicio de sesión, tipo de mensaje, objeto, REMOTE SERVICE BINDING, rol, ruta, esquema, servidor, servicio , CLAVE SIMÉTRICA, TIPO, USUARIO, COLECCIÓN DE ESQUEMAS XML.securable_class must be one of the following: APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, ENDPOINT, FULLTEXT CATALOG, LOGIN, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVER, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION.

Columnas devueltasColumns Returned

La tabla siguiente enumeran las columnas que fn_my_permissions devuelve.The following table lists the columns that fn_my_permissions returns. En cada fila devuelta se describe un permiso correspondiente al contexto de seguridad actual del elemento protegible.Each row that is returned describes a permission held by the current security context on the securable. Devuelve NULL si la consulta da error.Returns NULL if the query fails.

Nombre de columnaColumn name TipoType DescripciónDescription
entity_nameentity_name sysnamesysname Nombre del elemento protegible en el que se conceden los permisos indicados.Name of the securable on which the listed permissions are effectively granted.
subentity_namesubentity_name sysnamesysname Nombre de columna si el elemento protegible tiene columnas; de lo contrario, es NULL.Column name if the securable has columns, otherwise NULL.
permission_namepermission_name nvarcharnvarchar Nombre del permiso.Name of the permission.

ComentariosRemarks

Esta función con valores de tabla devuelve una lista de los permisos efectivos correspondientes a la entidad de seguridad que realiza la llamada para un elemento protegible determinado.This table-valued function returns a list of the effective permissions held by the calling principal on a specified securable. Un permiso efectivo es cualquiera de los siguientes:An effective permission is any one of the following:

  • Un permiso concedido directamente a la entidad de seguridad, no denegado.A permission granted directly to the principal, and not denied.

  • Un permiso implícito en un permiso de nivel superior de la entidad de seguridad, no denegado.A permission implied by a higher-level permission held by the principal and not denied.

  • Un permiso concedido a un rol o grupo al que pertenece la entidad de seguridad, no denegado.A permission granted to a role or group of which the principal is a member, and not denied.

  • Un permiso de un rol o grupo al que pertenece la entidad de seguridad, no denegado.A permission held by a role or group of which the principal is a member, and not denied.

La evaluación de permisos siempre se realiza en el contexto de seguridad del autor de la llamada.The permission evaluation is always performed in the security context of the caller. Para determinar si otra entidad de seguridad tiene un permiso efectivo, el autor de la llamada debe tener el permiso IMPERSONATE en dicha entidad.To determine whether some other principal has an effective permission, the caller must have IMPERSONATE permission on that principal.

En el caso de entidades de esquema, se aceptan nombres no NULL de una, dos o tres partes.For schema-level entities, one-, two-, or three-part nonnull names are accepted. Para las entidades de nivel de base de datos, se acepta un nombre de una parte, con un valor null que significa "base de datos actual".For database-level entities, a one-part name is accepted, with a null value meaning "current database". En el caso del servidor, es necesario un valor NULL (que significa "servidor actual").For the server itself, a null value (meaning "current server") is required. fn_my_permissions no se puede comprobar los permisos en un servidor vinculado.fn_my_permissions cannot check permissions on a linked server.

La consulta siguiente devuelve una lista de clases de elementos protegibles integrados:The following query will return a list of built-in securable classes:

SELECT DISTINCT class_desc FROM fn_builtin_permissions(default)  
    ORDER BY class_desc;  
GO  

Si se especifica DEFAULT como valor de protegible o securable_class, el valor se interpretará como NULL.If DEFAULT is supplied as the value of securable or securable_class, the value will be interpreted as NULL.

EjemplosExamples

A.A. Enumerar los permisos efectivos del servidorListing effective permissions on the server

El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en el servidor.The following example returns a list of the effective permissions of the caller on the server.

SELECT * FROM fn_my_permissions(NULL, 'SERVER');  
GO  

B.B. Enumerar los permisos efectivos de la base de datosListing effective permissions on the database

El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en la base de datos AdventureWorks2012AdventureWorks2012.The following example returns a list of the effective permissions of the caller on the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012;  
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');  
GO  

C.C. Enumerar los permisos efectivos de una vistaListing effective permissions on a view

El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en la vista vIndividualCustomer del esquema Sales de la base de datos AdventureWorks2012AdventureWorks2012.The following example returns a list of the effective permissions of the caller on the vIndividualCustomer view in the Sales schema of the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012;  
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')   
    ORDER BY subentity_name, permission_name ;   
GO   

D.D. Enumerar los permisos efectivos de otro usuarioListing effective permissions of another user

El ejemplo siguiente devuelve una lista de los permisos efectivos del usuario de base de datos Wanida en la tabla Employee del esquema HumanResources de la base de datos AdventureWorks2012AdventureWorks2012.The following example returns a list of the effective permissions of database user Wanida on the Employee table in the HumanResources schema of the AdventureWorks2012AdventureWorks2012 database. El autor de la llamada requiere el permiso IMPERSONATE en el usuario Wanida.The caller requires IMPERSONATE permission on user Wanida.

EXECUTE AS USER = 'Wanida';  
SELECT * FROM fn_my_permissions('HumanResources.Employee', 'OBJECT')   
    ORDER BY subentity_name, permission_name ;    
REVERT;  
GO  

E.E. Enumerar los permisos efectivos de un certificadoListing effective permissions on a certificate

El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en un certificado denominado Shipping47 en la base de datos actual.The following example returns a list of the effective permissions of the caller on a certificate named Shipping47 in the current database.

SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');  
GO  

F.F. Enumerar los permisos efectivos de una colección de esquemas XMLListing effective permissions on an XML Schema Collection

El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de llamada en una colección de esquemas XML denominada ProductDescriptionSchemaCollection en el AdventureWorks2012AdventureWorks2012 base de datos.The following example returns a list of the effective permissions of the caller on an XML Schema Collection named ProductDescriptionSchemaCollection in the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012;  
SELECT * FROM fn_my_permissions('ProductDescriptionSchemaCollection',  
    'XML SCHEMA COLLECTION');  
GO  

G.G. Enumerar los permisos efectivos de un usuario de base de datosListing effective permissions on a database user

El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en un usuario denominado MalikAr en la base de datos actual.The following example returns a list of the effective permissions of the caller on a user named MalikAr in the current database.

SELECT * FROM fn_my_permissions('MalikAr', 'USER');  
GO  

H.H. Enumerar los permisos efectivos de otro inicio de sesiónListing effective permissions of another login

El ejemplo siguiente devuelve una lista de los permisos efectivos del inicio de sesión de SQL ServerSQL Server WanidaBenshoof en la tabla Employee del esquema HumanResources de la base de datos AdventureWorks2012AdventureWorks2012.The following example returns a list of the effective permissions of SQL ServerSQL Server login WanidaBenshoof on the Employee table in the HumanResources schema of the AdventureWorks2012AdventureWorks2012 database. El autor de la llamada requiere el permiso IMPERSONATE en el inicio de sesión de SQL ServerSQL Server WanidaBenshoof.The caller requires IMPERSONATE permission on SQL ServerSQL Server login WanidaBenshoof.

EXECUTE AS LOGIN = 'WanidaBenshoof';  
SELECT * FROM fn_my_permissions('AdventureWorks2012.HumanResources.Employee', 'OBJECT')   
    ORDER BY subentity_name, permission_name ;    
REVERT;  
GO  

Vea tambiénSee Also

Funciones de seguridad (Transact-SQL) Security Functions (Transact-SQL)
Permisos (motor de base de datos) Permissions (Database Engine)
Securables Securables
Jerarquía de permisos (motor de base de datos) Permissions Hierarchy (Database Engine)
sys.fn_builtin_permissions (Transact-SQL) sys.fn_builtin_permissions (Transact-SQL)
Vistas de catálogo de seguridad (Transact-SQL) Security Catalog Views (Transact-SQL)
EXECUTE AS (Transact-SQL)EXECUTE AS (Transact-SQL)