Partilhar via


sys.fn_my_permissions (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)ponto de extremidade de análise SQL no Microsoft FabricWarehouse no Microsoft Fabric

Devolve uma lista das permissões efetivamente concedidas ao principal sobre um seguro garantido. Uma função relacionada é HAS_PERMS_BY_NAME.

Transact-SQL convenções de sintaxe

Sintaxe

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

O nome do seguro. Se o securável for o servidor ou uma base de dados, este valor deve ser definido para NULL. Securable é uma expressão escalar do tipo sysname. Securable pode ser um nome em várias partes.

'securable_class'

O nome da classe de segurança para a qual as permissões estão listadas. securable_class é sysname, com um padrão de NULL.

Este argumento deve ser um dos seguintes valores: APPLICATION ROLE, ASSEMBLY, CERTIFICATEASYMMETRIC KEY, CONTRACT, DATABASE, , ENDPOINT, FULLTEXT CATALOG, TYPEREMOTE SERVICE BINDINGROLEOBJECTROUTESCHEMAMESSAGE TYPELOGINSERVICESYMMETRIC KEYSERVERUSER, , . XML SCHEMA COLLECTION Um valor de NULL tem por defeito .SERVER

Colunas retornadas

A tabela a seguir lista as colunas que fn_my_permissions retornam. Cada linha devolvida descreve uma permissão detida pelo contexto de segurança atual sobre o securável. Retorna NULL se a consulta falhar.

Nome da coluna Tipo Description
entity_name sysname Nome do seguro sobre o qual as permissões listadas são efetivamente concedidas.
subentity_name sysname Nome da coluna se o seguro tiver colunas, caso contrário NULL.
permission_name nvarchar Nome da autorização.

Observações

Esta função com valores de tabela devolve uma lista das permissões efetivas detidas pelo principal chamador sobre um securable especificado. Uma permissão eficaz é qualquer uma das seguintes opções:

  • Uma permissão concedida diretamente ao diretor, e não negada.
  • Uma permissão implícita por uma autorização de nível superior detida pelo diretor e não negada.
  • Uma permissão concedida a um papel ou grupo do qual o principal é membro, e não negada.
  • Uma permissão detida por um papel ou grupo do qual o principal é membro, e não negada.

A avaliação de permissões é sempre realizada no contexto de segurança do interlocutor. Para determinar se algum outro principal tem uma permissão efetiva, o interlocutor deve ter IMPERSONATE permissão sobre esse principal.

Para entidades ao nível do esquema, são aceites nomes não nulos de uma, duas ou três partes. Para entidades ao nível da base de dados, é aceite um nome de uma parte, sendo que um valor nulo significa a base de dados atual. Para o próprio servidor, é necessário um valor nulo (ou seja, o servidor atual). fn_my_permissions Não é possível verificar permissões num servidor ligado.

A consulta seguinte devolve uma lista de classes securáveis incorporadas:

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

Se DEFAULT for fornecido como o valor de seguro ou securable_class, o valor é interpretado como NULL.

A fn_my_permissions função não é suportada em pools SQL dedicados do Azure Synapse Analytics.

Permissions

Requer adesão à função pública de .

Examples

A. Liste as permissões efetivas no servidor

O exemplo seguinte devolve uma lista das permissões efetivas do chamador no servidor.

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

B. Liste permissões efetivas na base de dados

O exemplo seguinte devolve uma lista das permissões efetivas do chamador na AdventureWorks2025 base de dados.

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

C. Liste permissões efetivas numa visualização

O exemplo seguinte devolve uma lista das permissões efetivas do chamador na vIndividualCustomer vista no Sales esquema da AdventureWorks2025 base de dados.

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 utilizador

O exemplo seguinte devolve uma lista das permissões efetivas do utilizador Wanida da base de dados na Employee tabela no HumanResources esquema da AdventureWorks2025 base de dados. O chamador necessita IMPERSONATE de permissão do utilizador Wanida.

EXECUTE AS USER = 'Wanida';

SELECT *
FROM fn_my_permissions('HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;

REVERT;
GO

E. Liste permissões efetivas num certificado

O exemplo seguinte devolve uma lista das permissões efetivas do chamador num certificado nomeado Shipping47 na base de dados atual.

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

F. Liste permissões efetivas numa Coleção de Esquemas XML

O exemplo seguinte devolve uma lista das permissões efetivas do chamador numa Coleção de Esquemas XML nomeada ProductDescriptionSchemaCollection na AdventureWorks2025 base de dados.

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

G. Listar permissões efetivas num utilizador de base de dados

O exemplo seguinte devolve uma lista das permissões efetivas do chamador sobre um utilizador nomeado MalikAr na base de dados atual.

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

H. Liste permissões efetivas de outro login

O exemplo seguinte devolve uma lista das permissões efetivas do login WanidaBenshoof do SQL Server na Employee tabela no HumanResources esquema da AdventureWorks2025 base de dados. O chamador necessita IMPERSONATE de permissão para iniciar sessão WanidaBenshoofno SQL Server.

EXECUTE AS LOGIN = 'WanidaBenshoof';

SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;

REVERT;
GO