sys.fn_my_permissions (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse 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: APPLICATION ROLE
, , , ASYMMETRIC KEY
ASSEMBLY
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
Um valor de NULL
padrão para SERVER
.
Colunas retornadas
A tabela a seguir lista as colunas que fn_my_permissions
retornam. 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 sobre essa entidade de segurança.
Para entidades de nível de esquema, nomes não nulos de uma, duas ou três partes são aceitos. Para entidades no nível de banco de dados, um nome de uma parte é aceito, com um valor nulo significando 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 securável ou securable_class, o valor é interpretado como NULL
.
A fn_my_permissions
função não tem suporte nos pools 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 um modo de 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 esquema 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
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de