sys.fn_my_permissions (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric
Retorna uma lista das permissões efetivamente concedidas à entidade em um protegível. Uma função relacionada é HAS_PERMS_BY_NAME.
Convenções de sintaxe de Transact-SQL
Sintaxe
fn_my_permissions ( securable , 'securable_class' )
Argumentos
securable
O nome do protegível. Se o protegível for o servidor ou um banco de dados, esse valor deverá ser definido como NULL
. securable é uma expressão escalar do tipo sysname. securable pode ser um nome de várias partes.
'securable_class'
O nome da classe de protegível para a qual as permissões estão listadas. securable_class é sysname, com um padrão de NULL
.
Esse argumento deve ser um dos seguintes valores: , , , SYMMETRIC KEY
LOGIN
FULLTEXT CATALOG
MESSAGE TYPE
ENDPOINT
CONTRACT
USER
SCHEMA
TYPE
REMOTE SERVICE BINDING
ROLE
ROUTE
SERVICE
XML SCHEMA COLLECTION
DATABASE
SERVER
CERTIFICATE
OBJECT
ASYMMETRIC KEY
ASSEMBLY
APPLICATION ROLE
Um valor padrão de NULL
SERVER
.
Colunas retornadas
A tabela a seguir lista as colunas retornadas fn_my_permissions
. Cada linha retornada descreve uma permissão mantida pelo contexto de segurança atual no protegível. Retorna NULL
se a consulta falhar.
Nome da coluna | Type | Descrição |
---|---|---|
entity_name |
sysname | Nome do protegível no qual as permissões listadas são efetivamente concedidas. |
subentity_name |
sysname | Nome da coluna se o protegível tiver colunas, caso contrário NULL . |
permission_name |
nvarchar | Nome da permissão. |
Comentários
Esta função com valor de tabela retorna uma lista das permissões efetivas mantidas pela entidade de chamada em um protegível especificado. Uma permissão efetiva é qualquer uma das seguintes opções:
- Uma permissão concedida diretamente à entidade de segurança, e não negada.
- Uma permissão implicada por uma permissão de nível superior mantida pela entidade de segurança, e não negada.
- Uma permissão concedida a uma função ou grupo do qual a entidade de segurança é membro, e não negada.
- Uma permissão mantida por uma função ou grupo de qual a entidade de segurança é membro, e não negada.
A avaliação da permissão é sempre executada no contexto de segurança do chamador. Para determinar se alguma outra entidade de segurança tem uma permissão efetiva, o chamador deve ter IMPERSONATE
permissão nessa entidade de segurança.
Para entidades no nível do esquema, nomes não nulos de uma, duas ou três partes são aceitos. Para entidades no nível do banco de dados, um nome de uma parte é aceito, com um valor nulo que significa o banco de dados atual. Para o próprio servidor, um valor nulo (ou seja, o servidor atual) é necessário. fn_my_permissions
não é possível verificar permissões em um servidor vinculado.
A consulta a seguir retorna uma lista de classes protegíveis internas:
SELECT DISTINCT class_desc
FROM fn_builtin_permissions(DEFAULT)
ORDER BY class_desc;
GO
Se DEFAULT
for fornecido como o valor de protegível ou securable_class, o valor será interpretado como NULL
.
Não há suporte para a fn_my_permissions
função em pools de SQL dedicados do Azure Synapse Analytics.
Permissões
Requer associação à função pública .
Exemplos
R. Listar permissões efetivas no servidor
O exemplo a seguir retorna uma lista de permissões efetivas do chamador no servidor.
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO
B. Listar permissões efetivas no banco de dados
O exemplo a seguir retorna uma lista de permissões efetivas do chamador no banco de dados AdventureWorks2022
.
USE AdventureWorks2022;
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
GO
C. Listar permissões efetivas em uma exibição
O exemplo a seguir retorna uma lista de permissões efetivas do chamador na exibição vIndividualCustomer
no esquema Sales
do banco de dados AdventureWorks2022
.
USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT')
ORDER BY subentity_name, permission_name;
GO
D. Listar permissões efetivas de outro usuário
O exemplo a seguir retorna uma lista de permissões efetivas do usuário de banco de dados Wanida
na tabela Employee
no esquema HumanResources
do banco de dados AdventureWorks2022
. O chamador requer IMPERSONATE
permissão no usuário Wanida
.
EXECUTE AS USER = 'Wanida';
SELECT *
FROM fn_my_permissions('HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO
E. Listar permissões efetivas em um certificado
O exemplo a seguir retorna uma lista das permissões efetivas do chamador em um certificado denominado Shipping47
no banco de dados atual.
SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO
F. Listar permissões efetivas em uma coleção de esquemas XML
O exemplo a seguir retorna uma lista das permissões efetivas do chamador em uma coleção de esquemas XML denominada ProductDescriptionSchemaCollection
no banco de dados AdventureWorks2022
.
USE AdventureWorks2022;
GO
SELECT * FROM fn_my_permissions(
'ProductDescriptionSchemaCollection',
'XML SCHEMA COLLECTION'
);
GO
G. Listar permissões efetivas em um usuário de banco de dados
O exemplo a seguir retorna uma lista das permissões efetivas do chamador em um usuário denominado MalikAr
no banco de dados atual.
SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO
H. Listar permissões efetivas de outro login
O exemplo a seguir retorna uma lista de permissões efetivas do logon WanidaBenshoof
do SQL Server na tabela Employee
no esquema HumanResources
do banco de dados AdventureWorks2022
. O chamador requer IMPERSONATE
permissão no logon WanidaBenshoof
do SQL Server.
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO