fn_my_permissions (Transact-SQL)
Actualizado: 12 de diciembre de 2006
Devuelve una lista de los permisos concedidos a la entidad de seguridad en un asegurable.
Convenciones de sintaxis de Transact-SQL
Sintaxis
fn_my_permissions ( securable , 'securable_class')
Argumentos
- securable
Es el nombre del asegurable. Si el asegurable es el servidor o una base de datos, este valor se debe establecer en NULL. securable es una expresión escalar de tipo sysname. securable puede ser un nombre de varias partes.
'securable_class'
Es el nombre de la clase de asegurable de la que se indican los permisos. securable_class es de tipo sysname. securable_class debe tener uno de los siguientes valores: 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.[!NOTA] Si usa una intercalación que diferencia entre mayúsculas y minúsculas, deberá escribir toda la clase de asegurable en caracteres en minúscula.
Notas
Esta función con valores de tabla devuelve una lista de los permisos efectivos correspondientes a la entidad de seguridad que realiza la llamada en un asegurable determinado. Un permiso efectivo es cualquiera de los siguientes:
- Un permiso concedido directamente a la entidad de seguridad y que no se ha denegado.
- Un permiso implícito de un permiso de nivel superior correspondiente a la entidad de seguridad y que no se ha denegado.
- Un permiso concedido a una función o un grupo de los cuales es miembro la entidad de seguridad y que no se ha denegado.
- Un permiso correspondiente a una función o un grupo de los cuales es miembro la entidad de seguridad y que no se ha denegado.
La evaluación de permisos se realiza siempre en el contexto de seguridad del autor de la llamada. Para determinar si otra entidad de seguridad tiene un permiso efectivo, el autor de la llamada debe tener el permiso IMPERSONATE en dicha entidad.
En el caso de entidades de nivel de esquema, se aceptan nombres no NULL de una, dos o tres partes. En el caso de entidades de nivel de base de datos, se acepta un nombre de una parte con un valor NULL que significa "base de datos actual". En el caso del servidor mismo, se requiere un valor NULL (que significa "servidor actual"). fn_my_permissions no puede comprobar los permisos en un servidor vinculado.
La consulta siguiente devolverá una lista de clases asegurables integradas:
SELECT DISTINCT class_desc FROM fn_builtin_permissions(default)
ORDER BY class_desc;
GO
Si se especifica DEFAULT como el valor de securable o securable_class, se interpretará como NULL.
Columnas devueltas
En la tabla siguiente se enumeran las columnas que devuelve fn_my_permissions. En cada fila devuelta se describe un permiso correspondiente al contexto de seguridad actual del asegurable. Devuelve NULL si la consulta provoca un error.
Nombre de columna | Tipo | Descripción |
---|---|---|
entity_name |
sysname |
Nombre del asegurable en el que se conceden los permisos indicados. |
subentity_name |
sysname |
Nombre de columna si el asegurable tiene columnas; de lo contrario, es NULL. |
permission_name |
nvarchar |
Nombre del permiso. |
Ejemplos
A. Enumerar los permisos efectivos del servidor
El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en el servidor.
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO
B. Enumerar los permisos efectivos de la base de datos
El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en la base de datos AdventureWorks
.
USE AdventureWorks;
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO
C. Enumerar los permisos efectivos de una vista
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 AdventureWorks
.
USE AdventureWorks;
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name ;
GO
D. Enumerar los permisos efectivos de otro usuario
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 AdventureWorks
. El autor de la llamada requiere el permiso IMPERSONATE en el usuario Wanida
.
EXECUTE AS USER = 'Wanida';
SELECT * FROM fn_my_permissions('HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name ;
REVERT;
GO
E. Enumerar los permisos efectivos de un certificado
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.
SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO
F. Enumerar los permisos efectivos de una colección de esquemas XML
El ejemplo siguiente devuelve una lista de los permisos efectivos del autor de la llamada en una colección de esquemas XML denominada ProductDescriptionSchemaCollection
de la base de datos AdventureWorks
.
USE AdventureWorks;
SELECT * FROM fn_my_permissions('ProductDescriptionSchemaCollection',
'XML SCHEMA COLLECTION');
GO
G. Enumerar los permisos efectivos de un usuario de base de datos
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.
SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO
H. Enumerar los permisos efectivos de otro inicio de sesión
El ejemplo siguiente devuelve una lista de los permisos efectivos del inicio de sesión de SQL Server WanidaBenshoof
en la tabla Employee
del esquema HumanResources
de la base de datos AdventureWorks
. El autor de la llamada requiere el permiso IMPERSONATE en el inicio de sesión de SQL Server WanidaBenshoof
.
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT * FROM fn_my_permissions('AdventureWorks.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name ;
REVERT;
GO
Vea también
Referencia
Funciones de seguridad (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
Vistas de catálogo de seguridad (Transact-SQL)
EXECUTE AS (Transact-SQL)
Otros recursos
Permisos
Asegurables
Jerarquía de permisos
Ayuda e información
Obtener ayuda sobre SQL Server 2005
Historial de cambios
Versión | Historial |
---|---|
12 de diciembre de 2006 |
|